Zápočtový test 9.2.2009
-
- Matfyz(ák|ačka) level I
- Příspěvky: 44
- Registrován: 2. 2. 2008 09:35
- Typ studia: Informatika Bc.
Zápočtový test 9.2.2009
Ahoj.
Tak zadání mi vůbec nesedlo.
Vstupní soubor obsahuje řádky s informacemi o studentech.
Každý platný řádek musí obsahovat jméno studenta ve tvaru: Xxxx Xxxx a ID skupiny, ve tvaru: #int . dále může řádek obsahovat libovolný počet intů, floatů a textových informací, které smí být složené pouze ze znaků a-z a mezery. Sloupce můžou být v libovolném pořadí a jsou odděleny | .
př:
Jan Novák | #2 | 345 | 20.4 | tento radek je v poradku | 43 | 45.76
29|38|345.2|Honza Novák|take platny radek|#3
úkolem je:
1. načíst vstup do datových struktur
2. setřídít podle abecedy (podle jména)
3. vypsat deset jmen těch, u nichž je součet všech intů a floatů největší
4 rozdělit řádky vstupu podle ID skupiny a uložit do jednotilivých souborů (na pořadí sloupců opět nezáleží)
Mohl by mi někdo poradit, jak načíst ten vstupní soubor? Nešlo mi rozparsovat ty řádky..
Díky
Tak zadání mi vůbec nesedlo.
Vstupní soubor obsahuje řádky s informacemi o studentech.
Každý platný řádek musí obsahovat jméno studenta ve tvaru: Xxxx Xxxx a ID skupiny, ve tvaru: #int . dále může řádek obsahovat libovolný počet intů, floatů a textových informací, které smí být složené pouze ze znaků a-z a mezery. Sloupce můžou být v libovolném pořadí a jsou odděleny | .
př:
Jan Novák | #2 | 345 | 20.4 | tento radek je v poradku | 43 | 45.76
29|38|345.2|Honza Novák|take platny radek|#3
úkolem je:
1. načíst vstup do datových struktur
2. setřídít podle abecedy (podle jména)
3. vypsat deset jmen těch, u nichž je součet všech intů a floatů největší
4 rozdělit řádky vstupu podle ID skupiny a uložit do jednotilivých souborů (na pořadí sloupců opět nezáleží)
Mohl by mi někdo poradit, jak načíst ten vstupní soubor? Nešlo mi rozparsovat ty řádky..
Díky
Wenn ich morgen meinem Gott gegenüberstehe, kann ich sagen:
Ich bin unschuldig,
ich habe niemanden betrogen,
ich habe niemandem weh getan,
ausser mir selbst.
Und das wird er mir wohl verzeihen!
Ich bin unschuldig,
ich habe niemanden betrogen,
ich habe niemandem weh getan,
ausser mir selbst.
Und das wird er mir wohl verzeihen!
Re: Zápočtový test 9.2.2009
Vezmes tu radku (string), najdes prvni svislitko atd:
A ted zjistis, co je to za druh vstupu. Pokud je prvni pismeno upper case (udelej si jednoduchy makro #define isUpperCase(a) (a>='a' && a<='z') , stejne tak pro uppercase), tak projdi cely text, jestli kazdej znak je lowercase nebo mezera. Pokud je to upper case, melo by to byt jmeno. Pokud to je jmeno, musi tam byt presne jedna mezera. Tak to projedes. Pak to hodis do stringstreamu, pres nej do floatu a jen zjistis, jestli tam puvodne byla nekde (opet find) desetinna tecka. Pokud ne, hodis to mezi inty (i kdyz tohle je uplne naprd, cely to mohlo byt ve vectoru floatu). Jeste to muze zacinat '#'... No a cely to mas ve while(str!=""). Jo a asi jsem zapomnel na osekavani mezer na zacatku a konci toho part...
Kód: Vybrat vše
int pos = str.find('|');
string part;
if (pos!=string::npos){
//neni to NotFound
part = str.substr(0,pos+1?);
str = str.substr(pos+1?); //s tema jednickama si musis vyhrat
}else{
part = str;
str = "";
}
- mhb
- Matfyz(ák|ačka) level II
- Příspěvky: 50
- Registrován: 3. 2. 2008 03:38
- Typ studia: Informatika Ph.D.
- Kontaktovat uživatele:
Re: Zápočtový test 9.2.2009
Já jsem to řešil prostě načtením ( z proudu) prvního znaku, který rozhodl, co by to eventuelně mohlo být za typ položky, a pak trochu delší if podle toho, co to konkrétně bylo. Využil jsem hlavně toho, že v C máme krásnou relaci uspořádání na znacích, dále klasické triky se streamy jako putback() znaku, co jsem si právě načetl, abych se nemusel trápit s inty a spol. Jak říkal kolega správně, řešit co to bylo za čísla vůbec nebylo potřeba - prostě se to nasázelo do sumy. Jinak - ve jméně nemusela být nutně právě jedna mezera, pokud vím FrantisekRingo Cech by se zlobil
Jinak zadání mi přišlo naprosto férové - algoritmicky nebylo moc co vymýšlet, ale procvičil se I/O a trošku to STLko, což je víceméně to, co jsem od zápočtového testu čekal Navíc dost času
Jinak zadání mi přišlo naprosto férové - algoritmicky nebylo moc co vymýšlet, ale procvičil se I/O a trošku to STLko, což je víceméně to, co jsem od zápočtového testu čekal Navíc dost času
- mhb
- Matfyz(ák|ačka) level II
- Příspěvky: 50
- Registrován: 3. 2. 2008 03:38
- Typ studia: Informatika Ph.D.
- Kontaktovat uživatele:
Re: Zápočtový test 9.2.2009
Nene, tak moc nás netrápil. Mohli jsme předpokládat, že to jsou znaky z [a-zA-Z] (ve formátu Velké Prvni Jinak Mala).Návštěvník píše:A ta jmena mohla obsahovat diakritiku ?
Mimochodem, jaká byla nakonec statistika úspěšnosti?
- kaja
- Matfyz(ák|ačka) level II
- Příspěvky: 99
- Registrován: 20. 12. 2007 00:53
- Typ studia: Informatika Bc.
- Login do SIS: bilek7am
- Bydliště: Miðgarðr
- Kontaktovat uživatele:
Re: Zápočtový test 9.2.2009
ale, nakonec jsme tam byli asi 3 a dovolil nám ten čas přetáhnout o hodinu
nebylo to až tak těžké, ale já jsem s Mapem nikdy nedělal tak jsem se tam s nim tak hodinu trápil :/
nebylo to až tak těžké, ale já jsem s Mapem nikdy nedělal tak jsem se tam s nim tak hodinu trápil :/
PONIES
-
- Matfyz(ák|ačka) level I
- Příspěvky: 42
- Registrován: 31. 1. 2008 15:40
- Typ studia: Informatika Mgr.
- Login do SIS: 25972507
- Kontaktovat uživatele:
Re: Zápočtový test 9.2.2009
Ještě dodám, že platily následující pravidla (ze začátku byl vypnutý switch, ale potom ho zapnul):
Zakázáno:
Zakázáno:
- předepsaný kód => nechtěl vidět žádnou flešku
- komunikace s jinou osobou
- elektronické materiály (nejsem si jistý)
- později zakázány všechny stránky kromě těch povolených
- offline MSDN
- jakékoliv tištěné materiály
- později povolena také online dokumentace - MSDN a http://www.cplusplus.com