Tak potom co jsem na linearce dopadl jak napoleon u waterloo (jenze tomu lord Welington nerekl "pohar me trpelivosti pretekl, dete domu") Tak jsem si po ceste domu skocil mimo plan na cecko a vysledek:
zadani:
udelejte procesor maker ve formatu
#makroA nahrada
#makroB nahrada
nazev je posloupnost znaku u kterych by isalpha() hodila true
pricemz makro v makru se ma rozvinout take... bez parametru zpracovat stdin a vystup na stdout, jinak:
-i input.file
-o output.file
protoze to ma jit i pres stdin, musi to byt na jeden pruchod, makra se nemuzou zacyklit, protoze pri rozbaleni makraA jeste nebylo definovane makroB, delka nazvu makra muze byt napr. max 64 znaku (omezit konstantou) a delka vseho ostatniho nekonecne dlouha...
takze napr:
#prvni toto je makro
#druhe toto neni prvni makro
toto je druhe ne prvni
vystup bude:
toto je toto neni toto je makro makro ne toto je makro
(proste se to rozbalilo vicekrat
skore: 2 ano (i kdyz ja v poslednich minutach), 1 ne... vic nas tam nebylo
31.5. 16:00
- tutchek
- Site Admin
- Příspěvky: 795
- Registrován: 21. 9. 2004 00:40
- Typ studia: Informatika Mgr.
- Login do SIS: tulam4am
- Bydliště: Praha, Bohnice
- Kontaktovat uživatele:
31.5. 16:00
exAdmin. Magistr přes umělou inteligenci. Právník přes daně.
- Dawe
- Supermatfyz(ák|ačka)
- Příspěvky: 360
- Registrován: 12. 10. 2004 12:32
- Typ studia: Informatika Mgr.
- Bydliště: Doma a nebo na koleji
Podmínka?
Chci se zeptat, jaká tam byla podmínka toho nahrazování, vždyť kdyby bylo v každém z těch dvou maker slovo které by bylo v nahrazujícím výrazu toho druhého, pak by se to klidně mohlo zacyklit. Chápal bych kdyby se rozbalilo první, pak druhý makro atd. Z toho tvýho příkladu jsem ale pochopil, že se má rozbalit snad všechno, to by se ale potom klidně mohlo cyklit do nekonečna...
A nebo to má být jen dvojtě? Pak by stačilo zachovat si makra, vytvořit nejříve pomocný soubor a pak to na to pustit znovu ne?
A nebo to má být jen dvojtě? Pak by stačilo zachovat si makra, vytvořit nejříve pomocný soubor a pak to na to pustit znovu ne?
- tutchek
- Site Admin
- Příspěvky: 795
- Registrován: 21. 9. 2004 00:40
- Typ studia: Informatika Mgr.
- Login do SIS: tulam4am
- Bydliště: Praha, Bohnice
- Kontaktovat uživatele:
Re: Podmínka?
Dawe píše:Chci se zeptat, jaká tam byla podmínka toho nahrazování, vždyť kdyby bylo v každém z těch dvou maker slovo které by bylo v nahrazujícím výrazu toho druhého, pak by se to klidně mohlo zacyklit. Chápal bych kdyby se rozbalilo první, pak druhý makro atd. Z toho tvýho příkladu jsem ale pochopil, že se má rozbalit snad všechno, to by se ale potom klidně mohlo cyklit do nekonečna...
A nebo to má být jen dvojtě? Pak by stačilo zachovat si makra, vytvořit nejříve pomocný soubor a pak to na to pustit znovu ne?
Tzn. nemuze se to zacyklit, protoze pokud by posledni makro vychazelo z prvniho, tak by to neslo, pac to prvni uz nezmeni... to uz je dany a nemenny...Já jsem píše:protoze to ma jit i pres stdin, musi to byt na jeden pruchod, makra se nemuzou zacyklit, protoze pri rozbaleni makraA jeste nebylo definovane makroB, delka nazvu makra muze byt napr. max 64 znaku (omezit konstantou) a delka vseho ostatniho nekonecne dlouha...
A jeste plati ze "prvni" neni "prvniXXX"
exAdmin. Magistr přes umělou inteligenci. Právník přes daně.
- tutchek
- Site Admin
- Příspěvky: 795
- Registrován: 21. 9. 2004 00:40
- Typ studia: Informatika Mgr.
- Login do SIS: tulam4am
- Bydliště: Praha, Bohnice
- Kontaktovat uživatele:
Makro se samozrejme neaplikuje samo na sebe... na jeden pruchod znamena, ze kazdy kus vstupu uvidi program jen jednou (jako kdyby mu prisel pres pajpu, kdyz uz mame ty unixove znalosti )Hugo píše:moc tomu na ten "1 pruchod" nerozumim..
#define dnes ctvrtek je dnes
makro bude znat a az narazi na dnes, tak ho nahradi..ale ptz bude znat makro dnes skonci to nekonecnym vypisonavim ctvrtek je ctvrtek je ctvrtek je...
exAdmin. Magistr přes umělou inteligenci. Právník přes daně.