Zapoctovy test 19.1.2011

Cílem semináře je seznámit posluchače s jazykem C#, prostředím platformy .NET a tvorbou aplikací s grafickým uživatelským rozhraním. Předpokládají se znalosti objektově orientovaného programování.
vidlak
Matfyz(ák|ačka) level I
Příspěvky: 20
Registrován: 10. 1. 2008 23:19
Typ studia: Informatika Bc.

Zapoctovy test 19.1.2011

Příspěvek od vidlak »

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:

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

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

Kód: Vybrat vše

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:

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
- 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.
Odpovědět

Zpět na „NPRG035 Jazyk C# a platforma .NET“