Staonův svět - Zápočet C/C++ 7.6

Zápočtová písemka z C/C++ Úkol: preprocesor jazyka C

Preprocesor jazyka C

Na standardním vstupu byl text, který se měl zpracovat (tzn. muselo to být jednoprůchodově). Měli se najít řádky, které začínají #define (před a po # mohl být libovolný počet mezer, takže třeba " # define") a za tím definice. Úkolem bylo nahradit všechny výskyty definovaného slova, za jeho náhradu. Takže byl třeba někde řádek " # define nahrazuji_co nahrazuji timto" a vsechny vyrazy „nahrazuji_co“ se meli nahradit za „nahrazuji timto“.

Aby to nebylo tak jednoduché, ještě se musely ošetřit parametry a kontrolovat jejich správný počet. Takže například po přečtení řádku #define nahrazuji(a,b) nahrazeni(a * max + b) se měly všechny řádky které obsahovaly nahrazuji se dvěma parametry nahradit a tu nahrazovanou frázi se správně nahrazenými parametry.

A třetí zákeřná věc byla s maximální délkou textů. Název definice mohl mít maximálně konstantní délku, ale to, čím se nahrazuje, mohlo být neomezeně dlouhé a načítané řádky mohly být také neomezeně dlouhé.

No a C++ bylo zakázané.


No a probíhalo to tak, že nám řekl, že na to máme 2,5 hod. Když to uplynulo, tak to ještě nikdo neměl, tak nám řekl, že nám přidá heště hodinu, a pak řekl, že když někdo nebude mít ty parametry, tak to vezme, ale už to musí být naprosto tip ťop. No po hodině to ještě pořád nikdo neměl, tak řekl ať ještě programujeme. No a po 4 hodinách od začátku jsem musel odejít, protože jsem měl ještě další zkoušku. Takže nevím jaká byla úspěšnost.

Já jsem neměl parametry a nefungovala maximální délka nahrazovaného textu a to mi neuznal :-/

Martin

Matfyz | 8.6.2006 Čt 13:53 | <<< trvalý odkaz >>> | tisk | 0 komentářů

Komentáře k textu

Rss komentářů tohoto textu

Přidej komentář!

  Gravatar povolen.

Příspěvěk je formátován Texy! syntaxí. Není povoleno HTML, odkazy se převádějí automaticky.
Kolik je 3 x 5?
Odpověd: nevím, ale násobení na reálných číslech tvoří komutativní grupu. 237

Autor vzhledu: Staon. Stránky jsou postaveny na redakčním systému RS2 (verze RC2).