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í.