Zadání i Jendovo řešení - strašná prasárna - je v příloze.
Bylo povoleno všechno kromě komunikace (messaging, chat). Při odevzdávání si nechal dopsat do vstupu pár tagů a na kód se skoro nedíval.
Oficiální „správné“ řešení bylo udělat stavový automat.
Kód: Vybrat vše
Zadání zápočtového testu z C++
Úkolem je zobrazit HTML v textové podobě.
Základní zadání
Vytvořte program, který dostane z příkazové řádky jména dvou souborů. První soubor představuje vstup v omezeném a zjednodušeném HTML, druhý soubor je textový výstup zobrazení HTML.
Vstupní HTML soubor musí odpovídat XHTML, tj. všechny otvírací HTML tagy mají i odpovídající párový ukončovací tag.
Tagy nemají žádné atributy, nelze použít zkrácený uzavřený tag, vždy musí být dvojice otevírací a ukončovací tag, např. <hr></hr> je povoleno, nemůže být <hr/>.
Vstupní HTML obsahuje pouze tagy z těla HTML, tj. vůbec neřešíme <head> a na vstupu nebude, řešíme jen vnitřek <body>, na vstupu tag <body> také není.
Tagy se až na jednu výjímku nesmí vnořovat, tj. uvnitř tagu <P> nemůže být tag <UL>.
Tagy mohou být zapsány libovolnou kombinací malých a velkých písmen. Uvnitř tagu nejsou povoleny žádné mezery.
Mezi tagy nejsou povoleny žádné znaky s výjímkou mezerových znaků (whitespaces).
Podporovány jsou následující tagy:
H1 — všechna písmena budou zobrazena velkými písmeny, je podporována pouze anglická abeceda, tvoří samostatnou řádku (viz <P>)
H2 — počáteční písmena slov budou zobrazena velkými písmeny, je podporována pouze anglická abeceda, tvoří samostatnou řádku (viz <P>)
P — zobrazí se jako samostatná jedna řádka, tj. více řadek uvnitř tagu se spojí do jedné řádky, oddělení je prázdnou řádkou
UL — blok odrážek, může se vnořovat, do <LI> tagu, všechny odpovídající odrážky začínají o 4 mezery dále, uvnitř tagu mohou být pouze <LI> tagy, žádný text
LI — odrážka uvnitř <UL> tagu, začíná na znak *, následuje mezera, pak text odrážky, více řádek se sleje v jednu řádku, uvnitř tagu je povolen buď text nebo <UL> tag, žádná kombinace
HR — zobrazí vodorovnou čáru pomocí 40 znaků -, uvnitř tagu nejsou povoleny žádné znaky vyjma mezer (whitespaces)
Při slučování více řádek do jedné řádky vznikne mezi posledním slovem na řádce a prvním slovem na následující řádce právě jedna mezera.
Jakákoliv chyba (např. při párování nebo rozeznávaní tagů) je hlášena.
Ukázka
HTML vstup
<H1>Nadpis stranky</H1>
<H2>Vnorene odrazky</H2>
<p>Prvni radka odstavce,
druha radka odstavce</p>
<hr></hr>
<Ul>
<li>prvni normalni odrazka</li>
<li>druha normalni odrazka</li>
<li><ul>
<li>prvni zanorena odrazka</li>
<li>druha zanorena odrazka</li>
</ul></li>
<li>treti normalni odrazka</li>
</uL>
Textový výstup
NADPIS STRANKY
Vnorene Odrazky
Prvni radka odstavce, druha radka odstavce
----------------------------------------
* prvni normalni odrazka
* druha normalni odrazka
* prvni zanorena odrazka
* druha zanorena odrazka
* treti normalni odrazka