Strukturirani podatki
Na vhodni datoteki imamo strukturirano besedilo v obliki, ki je podobna html ali xml, a s preprostejšim zapisom. Lahko si ga predstavljamo kot knjigo, ki vsebuje poglavja, ta vsebujejo podpoglavja, ta odstavke in tako naprej.
Vsaka vrstica vhodne datoteke lahko vsebuje začetno značko, končno značko ali pa neko poljubno vrstico besedila.
Začetna značka je sestavljena iz znaka »+«, ki mu sledi neko poljubno ime značke, npr:
+uvod
Končna značka je sestavljena iz znaka »-«, ki mu sledi ime značke, ki se na tem mestu zaključuje, npr:
-uvod
Predpostavimo lahko, da so vhodni podatki pravilni: začetne in končne značke so lahko gnezdene, pri tem se ime končne značke vedno ujema z imenom zadnje začetne značke, zato ga ni treba preverjati.
Vse ostale vrstice lahko vsebujejo poljubno besedilo. Te vrstice se ne morejo začeti z znakoma »+« ali »-«.
Zaradi preglednosti lahko na začetku vsake vrstice stojijo presledki, ki pa jih ignoriramo.
Primer takega besedila na vhodni datoteki:
+ena
+dve
alfa
-dve
+tri
beta
gama
+stiri
delta
-stiri
epsilon
-tri
zeta
+tri
-tri
-ena
eta
Napiši program, ki bo bral vhodne podatke v tej obliki in sproti izpisoval vse vrstice besedila, ki niso značke; pri tem pa naj pred vsako tako vrstico izpiše vse trenutno aktivne značke (v takem vrstnem redu, kot so gnezdene druga v drugi), med seboj ločene s pikami. Tvoj program lahko bere s standardnega vhoda ali pa iz datoteke vhod.txt (kar ti je lažje). Bere naj vse do konca (EOF). Predpostavi, da je posamezna vrstica dolga največ 100 znakov in da značke niso gnezdene več kot 100 nivojev globoko. Imena značk so sestavljena le iz črk angleške abecede.
Takle naj bo rezultat obdelave zgornjega primera:
ena.dve alfa
ena.tri beta
ena.tri gama
ena.tri.stiri delta
ena.tri epsilon
ena zeta
eta
PDF besedilo.