Třída CVector - operátory





Pokračujte v příkladu z minulých cvičení přidáním operátorů do třídy CVector.



Přidejte do funkce main následující kód a napište operátory tak, aby korektně fungoval.



// #include <utility> // pro rel_ops

{
CVector a1 (), a2(), a3; // vstupní hodnoty
CVector b, c, d, dm, e, f, g, h ; // proměnné pro výstup

b = a3; // operátor přiřazení pro implicitní objekt
c = a1; // operátor přiřazení =, pro objekt s hodnotami
a1 = a1; // operátor přiřazení =; test správnosti pro zvláštní případ

size_t i = size_t (a1) ; // konverzní operátor, který vrací počet prvků v poli (iSize)

d = +a1; // unární operátor + ; vrací hodnotu a1 (hodnotou nebo referencí?)
dm = -a1; // unární operátor - ; vrací vektor, který má všechny prvky v poli vynásobené hodnotou -1 (vrací hodnotu nebo referenci?)
e = +a1 + a2; // unární a binární + ; pokud jsou vektory stejně dlouhé, vrátí vektor, jehož prvku jsou součtem prvků operandů na stejných pozicích. Jinak vrátí implicitní objekt ()
f = +a2 + a1; // stejné operátory i výsledek jako předchozí

h = 8.1 * a1; // vynásobí všechny prvky vektoru daným číslem, použijte friend

int i;
for (i=0;i<h.Size();++i)
cout << h[i] << " " ; // tisk položek pole, pro operátor[] využijte již hotovou metodu At

if (e == f) // porovnání dvou stejných vektorů, lexikografické porovnání (viz níže)
cout << "v poradku";
else
cout << "spatny vysledek"
g = a3 + a1; // nejde sečíst
if (g == f) // porovnání dvou různých vektorů,
cout << "spatny vysledek";
else
cout << "v poradku";
if (g < f) // porovnání dvou různých vektorů, lexikografické porovnání
cout << "v poradku";
else
cout << "spatny vysledek;
// pro následující testy nepište metody, ale použijte metody v rel_ops
// using namespace std::rel_ops;
if (g != f) // porovnání dvou různých vektorů, podle aktuálního počtu prvků
cout << "v poradku";
else
cout << "spatny vysledek";
if (f > g) // porovnání dvou různých vektorů, podle aktuálního počtu prvků
cout << "v poradku";
else
cout << "spatny vysledek";
}






Lexikografické porovnání má vlastnosti:
- porovnávají se příslušné prvky obou vektorů
- první různý prvek určuje, který vektor je menší/větší
- jestliže jsou počáteční prvky stejné, ale jeden vektor je kratší, potom je kratší vektor „menší"
- pokud jsou hodnoty prvků i délky stejné, potom jsou vektory stejné (rovnají se)
- prázdný vektor je menší než neprázdný
- dva prázdné vektory jsou stejné












Poslední úpravy 2018-11-20