Zapoctovy test 19.1.2011

vidlak at 2011-01-19 16:16:43

Dnesni zadani: Kontingencni tabulka (viz excel)

  • 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:

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

Priklad:

KontingencniTabulka.exe Vstup.txt Vystup.txt trzba jmeno zdroj

Suma trzby |            jmeno           |
-----------------------------------------
  zdroj    |    Pavel     |    Jachym   |
-----------------------------------------
  dovoz    |     2900     |    3000     |
-----------------------------------------
  tuzemska |     1500     |     750     |

Vystup:

  • 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:

    dovoz Pavel:2900 Jachym:3000 tuzemska Pavel:1500 Jachym:750

  • mezi jednotlivymi polozkami je vzdy 1 mezera

  • 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:

    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

  • vnorene radky se maji zarovnavat pod sebe a nazev nadrazene "slozky" se vypisuje jen u prvniho zaznamu.

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.