Zápočet 29.1.2016 - "HTML"

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: Zápočet 29.1.2016 - "HTML"

Zápočet 29.1.2016 - "HTML"

od Quarwen » 29. 1. 2016 12:09

Úkolem bylo napsat jednoduchý převaděč z HTML do markdownu.

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
	
Přílohy
zap.cpp
(4.97 KiB) Staženo 375 x

Nahoru