Pokračování minulé DU.
Rozšiřte minulý DU tak, aby prováděl následující kód.


Naprogramujte a ukažte tisk na konzolu. Naprogramujte a ukažte čtení z konzoly. (tvar tisku je níže).
Naprogramujte a ukažte tisk do souboru. Naprogramujte a ukažte čtení ze souboru.
Tisk i čtení bude míst stejný formát řetězce (tj. vytisknutý řetězec se bude dát načíst zpět do programu).
Pro tisk na konzolu a do souboru bude použita stejná funkce.
Pro čtení z konzoly a ze souboru bude použita stejná funkce.
(návod viz.: http://www.uamt.feec.vutbr.cz/~richter/vyuka/XPPC/bppc/cviceni/streamy.html)

Vytvořte pole deseti prvků, tak, aby proměnné pro jednotlivé složky dat měly různou velikost.
Pole vytiskněte tak, že prvky budou pod sebou.
Formát prvků zvolte tak, aby jednotlivé složky byly při tisku ve sloupcích pod sebou.
Hodnoty tiskněte (vždy) se znaménkem. Jednotlivé proměnné i celý objekt oddělte vhodnými oddělovači (vytvořte na základě používaného formátu z minulých DU).
Např.:

[ +1 ; +123]
[ -120 ; +12345]
[+123456 ; +1]
[ +12 ;+123456]

[ +1 ; -1]



Doplnte o dokumentaci pomocí doxygen (používejte stručné texty, máte prokázat, že rozumíte principu - tj. že víte kam co napsat)
- na úvodní stránku napsat zadání třídy.
- popsat (pro doxygen) soubory (hlavičkové)
- zadokumentovat třídu jako celek
- popsat proměnné třídy
- popsat metody včetně vstupních a výstupních parametrů
(inspirace http://www.uamt.feec.vutbr.cz/~richter/vyuka/XPPC/spolecne/uvod_doxygen.html zvláště v souboru na odkazu "Překlad si můžete vyzkoušet na příkladu...")



Třída by měla obsahovat pomocný textový řetězec (naalokovaný a naplněný textem v konstruktoru (např. text s typem konstruktoru, kterým byl objekt vytvořen).

Použít const kde je to možné, včetně const pro "this".

Použít reference pro předávání parametrů kde je to možné.

Projekt bude obsahovat tři soubory:
- testtrida.cpp - s main, ve kterém se budou volat všechny metody
- trida.h - kde bude prototyp třídy
- trida.cpp - kde budou zdrojové kódy třídy

Projekt bude přeložitelný bez warningů (žádné errory jsou samozřejmostí) - výjimkou jsou warningy typu unsafe s radou definujte _CRT_..._. Pro překlad zkuste nejpřísnější volbu /ALLWarnings (properties/C C++/debuger). Zkuste také volbu code analysis.





Používejte doporučení z tutoriálů.



Vzorový kód (T zastupuje vaši třídu):

{

Zde vytiskněte aktuální a celkový počet proměnných typu T pomocí statických metod.

{
T aa,hh,ii;
T bb(1);
T cc(1,2);
T dd(1,2,3);
T ee("..."); // za ... doplňte řetězec pro vložení vaší proměnné, tak jak ho máte v zadání.
T ff(dd);
T gg = ff;
T jj[10];

T *pa = &aa;
T *pb = new T;
T *pc = new T(2,3);
T *pd = new T(gg);
T *pe = new T[20];

aa.SetX(12.3); //za X si můžete doplnit název vyhovující vaší třídě
aa.SetY(2.3); //za Y si můžete doplnit název vyhovující vaší třídě
hh.SetXY(1.2,3.4); // za XY si můžete doplnit název vyhovující vaší třídě, popřípadě doplnit více argumentů
ii.Set(hh); // použijte referenci

// nastavte proměnnou odkazovanou pb na hodnoty proměnné dd

cout << "Hodnota je: " << hh.GetX() .... << endl; // postupně vytiskněte všechny složky z vaší proměnné

// stejným způsobem vytiskněte proměnnou odkazovanou pd

// stejným způsobem vytiskněte třetí proměnnou pole odkazovaného pe

// navrhněte operace pro Váš datový typ (důležitá je definice (hlavičky) operace a počet parametrů. Vlastní čiinnost operátoru si vymyslete sami vhodnou pro Váš typ – činnost popište v komentářích)

aa = -bb + +cc;

gg = ++dd;
jj[5] = dd++;
if (gg == jj[5])
cout << “ stejne hodnoty “ << endl;
else
cout << “ různé hodnoty “ << endl;


if (aa > ee)
aa += cc;


if (!aa) // výsledek bude true, je-li aa „použitelné“. „Použitelné“ zde definujeme jako že má obě složky různé od nuly.
++aa; // stejnou podmínku napište níže pro proměnnou odkazovanou pomocí pc
// zde bude předchozí if ale místo aa použijte pc (zkuste zjednodušené i plné funkční volání).



double nasob = 2.5;
jj[9] = *pc * nasob;
jj[8] = nasob * *pc; // použijte friend vlastnosti



// Vytvořit proměnné pro tisk

// tisk na konzolu
// načtení z konzoly

// otevřít soubory pro čtení a zápis
// tisk do souboru
// načtení dat ze souboru




// sem doplňte kód pro korektní hospodaření s pamětí

}

Zde vytiskněte aktuální a celkový počet proměnných typu T pomocí statických metod.

}





Odevzdejte v zip souboru: zdrojové a hlavičkové soubory *.c, *.h. Aktuální znění zadání.