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