Stránka 1 z 1

2. uloha mlaskal

Napsal: 8. 11. 2010 21:08
od blabla
zdravim,
vedeli by ste mi niekto presne napisat co vsetko sa v druhej ulohe povazuje za malformovany int a co za malformovany real? pocul som totiz uz viacero verzii a ziadne dve rovnake tak ak by to niekto vedel pekne prehladne napisat podla toho co sa dozvedel na cviku tak budem vdacny.

Re: 2. uloha mlaskal

Napsal: 9. 11. 2010 11:54
od ondr4
Ahoj,
podle toho co jsem pochopil na cviceni je malformace (nepocitam overflow) u intu neco jako

Kód: Vybrat vše

[0-9]+[a-zA-Z][0-9a-zA-Z]*
Jen je potreba dat si pozor a nesplest si jej se SPRAVNE zapsanym realem (treba 1e10).
Pod malformovanym realem je neco jako

Kód: Vybrat vše

[0-9]+[.][0-9]*[a-zA-Z][a-zA-Z0-9]*
EDIT: tohle pravidlo ale je i pro korektni real a proto je treba dat na nejakou predchazejici radku flex souboru pravidlo jej odchytavajici
Jestli me pamet neklame, cvicici tvrdil, ze

Kód: Vybrat vše

[0-9]+[e][a-zA-Z][a-zA-Z0-9]*
[0-9]+[e][0-9][a-zA-Z0-9]+
mame brat jako vadne inty a nepokouset se to rekonstruovat jako real. Behem psani tohoto textu me napadla jeste jedna silenost a nejak nevim, jak bych to resil, nejspis pres malformovany real.

Kód: Vybrat vše

[0-9]+[e][+-][0-9][a-zA-Z0-9]+
Taky bych uvital nazor nekoho dalsiho :-)

Re: 2. uloha mlaskal

Napsal: 10. 11. 2010 23:25
od mifeet
Ahoj,
já jsem to pochopil tak, že malformovaný uint je uint následovaný identifikátorem (bez mezery).

Malformovaný real by potom měl být buď real následovaný identifikátorem (bez mezery), nebo nesprávně ukončený real, volitelně následovaný identifikátorem. IMHO jsou dvě možnosti, jak real nesprávně ukončit - "12." nebo "12e". Zápis "12e+abc" bych jako real neřešil, spíš jako malformovaný uint, '+', identifikátor.

Na cvičení jsme si jako příklady malformovaných realů explicitně uváděli "1.2a8", "1. " (s mezerou na konci), "1e". Příklady malformovaných uintů byly "1234567890123a8", "1a". A speciálně upozorňoval na to, že "1..2" se musí interpretovat jako uint, "..", uint - tj. zde "1." není malformovaný real.

Re: 2. uloha mlaskal

Napsal: 11. 11. 2010 23:32
od blabla
toto je podla mna zle, pozri sa napriklad na 1.1e10, vyhovuje to regexpu a pritom je to vhodny real, ty tvrdis ze je malformovany...
ondr4 píše: ...Pod malformovanym realem je neco jako

Kód: Vybrat vše

[0-9]+[.][0-9]*[a-zA-Z][a-zA-Z0-9]*
aa toto by som urcite riesil cez malformovany real, kedze je to vhodne zapisany real a za neho je prilepeny identifikator... napriklad 11e+2ABCDE
ondr4 píše: ... Behem psani tohoto textu me napadla jeste jedna silenost a nejak nevim, jak bych to resil, nejspis pres malformovany real.

Kód: Vybrat vše

[0-9]+[e][+-][0-9][a-zA-Z0-9]+
Taky bych uvital nazor nekoho dalsiho :-)
teraz k tomu co napisal mifeet, ked som sa prehrabal forom z minulych rokov tak som natrafil dvakrat na nieco co som mal aj ja v poznamkach ale velmi som tomu nerozumel... a to ze za malformovany real sa povazuje aj take nieco, ze ak v diagrame pre real skoncime v stave z ktoreho nevedie priamo cesta na vzstup.. tj aj 11. napriklad a za tym moze byt znova nalepeny identifikator.. cim viac o tom citam tym som len viac zmateny, ak si je niekto isty ze vie co a ako tak ho upenlivo ziadam nech to sem napise :)

Re: 2. uloha mlaskal

Napsal: 12. 11. 2010 00:31
od ondr4
Jo, vidis, mam to blbe. Chtel jsem tim vystihnout to, co popisuje mifeet, a neuvedl jsem, ze predchozim pravidlem je treba odchytit korektni real. Myslel jsem [0-9]+[.][0-9]*[a-df-zA-DF-Z][a-zA-Z0-9]* ale stejne to neodchyti vsechny problemy, ktere muzou nastat. Ve svem reseni jsem proste vyuzival techniku matchovani flexu. Nejdriv jsem napsal popis korektniho uint, real a pak podstatne obecnejsi ale podobna pravidla na odchyt malformaci.