Zápočet 14.1.2008 14:00

Pokročilé vlastnosti jazyka C++, jejich použití pro objektové programování. Dědičnost, virtuální metody, Dynamická alokace. Šablony, generické programování, kompilační polymorfismus. Výjimky. Objektové knihovny, uživatelské kontejnery a iterátory, návrhové vzory. Nízkoúrovňové implementační techniky a konstrukce.
kuba.brecka
Matfyz(ák|ačka) level I
Příspěvky: 4
Registrován: 14. 1. 2008 17:15
Typ studia: Informatika Bc.

Zápočet 14.1.2008 14:00

Příspěvek od kuba.brecka »

Zdravím,
zápočtový test u počítače 14.1.2008 od 14:00 probíhal ve windowsí učebně SW2, toho kdo tam s námi byl jsem neznal. Něco málo přes půl hodiny trvaly technické věci a vysvětlování zadání. Psát jsme tedy začali kolem 14:35, času nám dal 3 hodiny, já odcházel v 16:05, pokud se nemýlím tak jako první. V 17:40 měl být konec, ale prý je možné ještě 30 minut nastavit. Literatura byla prý "skoro dovolená", tzn. když se občas kouknem do ref. příručky, tak v pohodě, ale nemáme to přehánět. Klasicky před začátkem odpojil síť, ještě předtím nám řekl, že si můžeme stáhnout slajdy z přednášky.

A teď zadání:
Program má ze standardního vstupu brát řádkovou specifikací "typů a jejich přetypování". Příkladem budiž:

Kód: Vybrat vše

type T1
type T2
type T3
  implicit T2
  explicit T1
type T1
  explicit T2
type T2
  explicit T3
Klíčové slovo "type" určuje definici nebo deklaraci typu, pokud za ním není žádné možné přetypování a hned další typ, značí to "dopřednou deklaraci", jak ji známe z C/C++. Program má za úkol zjistit chyby ve vstupu a ty vypsat do stderr, chyby jsou:
- jakýkoliv bordel vůbec
- neplatný název typu (case sensitive, musí začínat písmenem, ostatní mohou být znaky a-zA-Z0-9_)
- odkaz na neznámý identifikátor typu
- odkaz na sebe
- dvakrát stejné přetypování
- stejné explicitní a implicitní přetypování
Whitespacy mohou být všude a není to chyba, mají se ignorovat, při nalezení první chyby napsat řádek a chybu a skončit. Tak a pokud se žádná chyba nenajde, má program vypsat na stdin "C++kovou definici a deklaraci těchto typů tak, aby fungovaly naznačený přetypování". Já to řešil tak, že jsem tam udělal konverzní konstruktory a některý označil "explicit", jestli se to dalo řešit přes dědičnost netuším. Výsledek musí být zkompilovatelný (ale už ne slinkovatelný).

Tak a největší oříšek byl tento:
Program měl dále zjišťovat (pokud bude jako parametr -w nebo -W), jestli náhodou neexistuje cyklus v implicitních přetypováních. Pokud ano, stačí nalézt jeden a ten vypsat - jako "warning", čili neskončit ale dále tento vstup zpracovat.

Během psaní napsal na tabuli něco jako "testovací data". Já osobně jsem se s tím popral spoustou vectorů, map, setů, stackem a bůhvíčim ještě, když jsem mu to ukazoval, tak jsem to pustil asi na třech různých datech, dále jsem mu okazoval zdroják, nic moc výhrady vůči tomu neměl, jen drobnosti. Můj výsledek je v příloze. Určitě tam budou nějaký chyby, ale počítám, že to budou jen drobnosti.
kuba.brecka
Matfyz(ák|ačka) level I
Příspěvky: 4
Registrován: 14. 1. 2008 17:15
Typ studia: Informatika Bc.

Re: Zápočet 14.1.2008 14:00

Příspěvek od kuba.brecka »

Ještě ten můj zdroják.
Přílohy
main.cpp
(8.06 KiB) Staženo 414 x
Odpovědět

Zpět na „PRG032 Objektově orientované programování“