Autor Zpráva
Anonymní
Profil *
Zdravim ...
Lamem si hlavu nad jednym problemom.
Predstavte si ze mate pole, ako "orezanymi xml tagmi"
teda napr [0] "a"
[1] "b"
[2] "/b"
[3] "/a"
A mate zistit ci sa dodrzuje vnorenost (teda v tomto pripade je to ako by #a# #b# #/b# #/a# a je to v poriadku
napr #a# #b# #/a# #/b# je zle , lebo su prekrizene...
Neviete niekto poradit ? Alebo neaky hint ci literaturu (webovu)...
Dakujem za kazdy radu


----------------
## som nahradil < (lava zatvorka) a > <prava zatvorka>
Vraj na to ide nieco ako "FIFO " first in first out, ale neviem , nijako mi to nechce ist :(
habendorf
Profil
Vraj na to ide nieco ako "FIFO "

Spíš LIFO, ne?
Anonymní
Profil *
LIFO - da sa najst definicia, ale nevedeli by ste mi to prosim Vas vysvetlit neako polopatsticky :) ?
habendorf
Profil
abcdeabcde je FIFO - first in, first out - to zjevně nepotřebuješ
abcdeedcba je LIFO - last in, first out - to potřebuješ

Zkrátka budeš jednoduše hlídat, zda uzavíraný element neobsahuje nějaké jiné neuzavřené elementy.
nosko
Profil
Zrovna teraz máme v škole predmet kde sa riešia dátové štruktúry a to čo ty potrebuješ je už zmienený LIFO alebo stack
Ja by som to riešil nejak takto polopatsticky :)

mam jeden stack
prechádzam tvojim polom a keď nájdem otvárací element tak ho tam vložím - stackpush(otvaraci)
ak nájdem uzatvárací element tak vyberiem elemnt zo zásobníka stackpop() a porovnám ich ( ak sa rovnajú a=/a tak pokračujem ) ináč nemusím pokračovať, pokiaľ nevyprázdnim celý stack alebo nedojdem na koniec poľa.



a b c /c /b /a
zasobnik prazdny


na vstupe je a zostava b c /c /b /a
urob stac_push(a)
zasobnik
a

na vstupe je b zostava c /c /b /a
urob stac_push(b)
zasobnik
b
a

na vstupe je c zostava /c /b /a
urob stac_push(c)
zasobnik
c
b
a

na vstupe je /c zostava /b /a
urob stac_pop() vrati c rovnaju sa (c=/c) OK mozem ist dalej
zasobnik
b
a

na vstupe je /b zostava /a
urob stac_pop() vrati b rovnaju sa (b=/b) OK mozem ist dalej
zasobnik
a

na vstupe je /a zostava nic
urob stac_pop() vrati a rovnaju sa (a=/a) OK mozem ist dalej
zasobnik

zasobnik prazdny a neni vstup -> super vsetko OK


este zly pripad
a c /b /a
zasobnik prazdny

na vstupe je a zostava c /b /a
urob stac_push(a)
zasobnik
a

na vstupe je c zostava /b /a
urob stac_push(c)
zasobnik
c
a

na vstupe je /b zostava /a
urob stac_pop() vrati c nerovnaju sa (c=/b) zle koniec
zasobnik
a


Dúfam že som to nevysletlil moc zložito :)
habendorf
Profil
nosko
Dúfam že som to nevysletlil moc zložito :)

Říkáš to principiálně dobře, ale bude třeba ještě ohlídat <tag/> (vůbec ho nedávat do stacku).
nosko
Profil
Říkáš to principiálně dobře, ale bude třeba ještě ohlídat <tag/> (vůbec ho nedávat do stacku).
Teraz nechápem, <tag/> myslíš ukončovací tag?, lebo tie sa do stacku nevkladajú, ak naň narazí tak len vyberá.
habendorf
Profil
Teraz nechápem, <tag/> myslíš ukončovací tag?

Ukončovací tag pokud vím vypadá takto </tag> :o)

<tag/> je zkrácený (tzv. NET) zápis prázdného tagu <tag></tag>.
Anonymní
Profil *
nie , konkretne tag/ nie je problem , totizto nejedna sa o presne xml, len "napodobenimu" len nechapem
ako definovat stack_pop a stack_push , teda jak ich urobit ? maju precesat cely doterajsi zasobnik ?
nightfish
Profil
ako definovat stack_pop a stack_push , teda jak ich urobit ?
můžeš pro implementaci použít pole a array_push() a array_pop()
Anonymní
Profil *
v pascale :) ?
Anonymní
Profil *
ok, diky pozrel som si co robi array_* a dal do pas.
Diky moc vsem, ktory poradili , diky :)
nosko
Profil
Ukončovací tag pokud vím vypadá takto </tag> :o)

<tag/> je zkrácený (tzv. NET) zápis prázdného tagu <tag></tag>.


Jasne, pravdu mas ;)

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0