- program nacte data ze vstupniho souboru a podle parametru z prikazove radky vytvori kontingencni tabulku.
- prikazova radka: KontingencniTabulka.exe Vstup.txt Vystup.txt sloupec1 sloupec2 sloupec3 .... sloupecN
- ve sloupci1 jsou hodnoty, ktere se scitaji
- ve sloupci2 jsou popisky sloupcu
- sloupec3 .. sloupecN jsou popisky radku
- ve vstupnim souboru jsou na prvni radce nazvy sloupcu oddelene libovolnym poctem bilych znaku
- na dalsich radkach jsou samotne hodnoty. Pokud je na nekterem radku spatny pocet hodnot, tak vypsat chybu a skoncit. Stejne tak kdyz se nekolik sloupcu jmenuje stejne, kdyz nazvy sloupce v prikazove radce neodpovidaji sloupcum ve vstupnim souboru, nebo kdyz hodnota ve sloupci, ktery se scita neni cislo. Text a format vyhozenych erroru ma byt rozumny ale jinak je to na nas.
Priklad vstupu:
Kód: Vybrat vše
Vstup.txt:
jmeno zbozi typ zdroj trzba
Pavel kafe jidlo dovoz 2000
Pavel tricka obleceni tuzemska 1500
Jachym ovoce jidlo tuzemska 750
Pavel kalhoty obleceni dovoz 900
Jachym ovoce jidlo dovoz 3000
Kód: Vybrat vše
KontingencniTabulka.exe Vstup.txt Vystup.txt trzba jmeno zdroj
Suma trzby | jmeno |
-----------------------------------------
zdroj | Pavel | Jachym |
-----------------------------------------
dovoz | 2900 | 3000 |
-----------------------------------------
tuzemska | 1500 | 750 |
- myslim, ze hodnoty v tabulce odpovidaji SQL prikazu: SELECT sloupec3, .. sloupecN, sloupec2, SUM(sloupec1) GROUP BY sloupec3, .. sloupecN, sloupec2;
- tabulka se vypisuje po radcich
- tabulka nemusi byt setridena, ale lepe kdyz bude
- Predesla tabulka se na vystup vypise takto:
Kód: Vybrat vše
dovoz Pavel:2900 Jachym:3000
tuzemska Pavel:1500 Jachym:750
- vypisou se jen hodnoty, ktere jsou ve vstupu. Pokud by napr. Jachym nemel zadne zbozi z dovozu, pak by v radku s dovozem bylo jen "dovoz Pavel:2900"
- pokud bude zadano vic sloupcu bude to vypadat takto:
Kód: Vybrat vše
KontingencniTabulka.exe Vstup.txt Vystup.txt trzba jmeno typ zdroj
Suma trzby | jmeno |
---------------------------------------------------
typ | zdroj | Pavel | Jachym |
---------------------------------------------------
| dovoz | 2000 | 3000 |
jidlo -----------------------------------------
| tuzemska | | 750 |
---------------------------------------------------
| dovoz | 900 | |
obleceni -----------------------------------------
| tuzemska | 1500 | |
Vystup.txt:
jidlo dovoz Pavel:2000 Jachym:3000
tuzemska Jachym:750
obleceni dovoz Pavel:900
tuzemska Pavel:1500
Snad je to alespon trochu srozumitelne.
Nakonec to bylo jednodussi nez se zda. Tvar vysledne tabulky je dan parametry prikazove radky, takze si nemusite pamatovat celou vstupni tabulku, ale jen mezivysledky. Vstup se pak cte po radcich a jen se pridavaji zaznamy a scitaji hodnoty.
Ja mel tabulku reprezentovanou jako strom, kde v uzlech jsou SortedDictionary s odkazy na syny. V listech jsou sumy. Vse indexovane pres hodnoty ve vstupni tabulce. Posledni tabulka by mela v koreni klice "jidlo" a "obleceni", v synech klice "dovoz" a "tuzemska" a v dalsich synech (listech) uz by byly sumy indexovane jmeny.
Snad sem nekdo da originalni vstupy, vystupy a zadani.