• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

FJAP

Started by PaliP, 09.09.2011, 19:14:44

« predchdzajce - alie »

orsi

Quote from: ultimate on  23.11.2011, 22:06:20
ziadna klikacka vraj nebude
prečo?
Quote from: milaninho on  23.11.2011, 21:52:15
string je prostre string, ako si nadefinujes koniec je podla teba, ale zacina znakom a-z. ak si povies ze len tieto znaky mozu byt v stringu, tak potom vies jasne, ze ak ti pride lubovlny iny znak na vstup, tak uz to nie je string. neviem ci nejako presne definoval co je koniec, ale zaciatok vravel ze ma byt a-z
už som to vyriešil a dobre mi to robí, lexikalna analyza prebehla správne.

veteran

Quote from: orsi on  23.11.2011, 23:50:52
Quote from: ultimate on  23.11.2011, 22:06:20
ziadna klikacka vraj nebude
prečo?
Však na FJaPku má byť normálna písomka - taká, že tam treba aj písať, nie test. Alebo nie?

ultimate

riadna pisomka na papier bude, ziadne moodle a klikaci test s moznostami  >:(

milaninho

1. u kollara som klikacku este nezazil
2. to ze lexikalna analyza prebehne bez chyby este nemusi znamenat ze je spravne implementovana pre danu gramatiku

orsi

#479
Quote from: milaninho on  24.11.2011, 01:59:48
2. to ze lexikalna analyza prebehne bez chyby este nemusi znamenat ze je spravne implementovana pre danu gramatiku
tak toto si mal pravdu, zase...  :D
asi 4 hodiny som programoval 2 osetrenia, teda pripad ked sa zada napr. Kosice aby vyhodilo serror, a ked sa zada napr. 35kosice aby tiez dalo serror. vsetky mozne pripady a kombinacie cisielok a pismen ci malych alebo velkych by malo chodit. no zda sa mi ze takychto ošetrení by bolo treba daleko viac, napríklad pre špeciálne znaky (to si radšej nechcem predstaviť) v každom pripade len toto bolo narocne nakodit a zlozitost kodu je dost vysoka.

dal som si aj vypisat co sa kopiruje z pola sourceString do instring (to som si najprv vynuloval) a pekne vidim co tam je ulozene (nieco ako atribut pri integeri), tak mohlo by to uz byt.  :)

milaninho

podla mna to zbytocne komplikujes. neverim ze niektory cviciaci by ziadal neviem ake sialene retazce, pretoze cielom tohto druheho zadania nie je lex analyza (a takto sa zbytocne zabijes na lexikalnej analyze). co som pozeral zadanie, vsetko co je o retazci zadane, je ze ma zacinat malym pismenom tj. a-z, z toho podla mna vyplyva, ze mozes lex analyzu spravit tak, ze string bude zacinat znakom a-z, a bude interpretovat vstup ako sucast retazca, pokial tam budu znaky z tej mnoziny. krasne zlozito som sa vyjadril, ale cielom bolo povedat, ze retazec moze byt takyto: [a-z]{a-z} (tj ze sa sklada iba z malych znakov), resp. ak chces tak [a-z]{a-zA-Z}. do getsymbol ti staci v default vetve otestovat po tom co sa testuje vstup na cislo rovnako testovat vstup na znak a-z (a citat znaky kym su tam znaky a-z).

napr. nieco na tento sposob:


default  : if (c >='0' && c <= '9')
{ // celé číslo } else
              if (c >='a' && c <= 'z') {
....
               while(c>='a' && c<='z') // popr. while( (c>='a' && c<='z') || (c>='A' && c<='Z') ) - to sa mozno daj aj jednoduchsie v ASCII ale nepamatam sa a nechce sa mi googlit ako vyzera ASCII
....
}


Ak si si nie isty, tak si to kludne over u cviciaceho, ale osobne si myslim ze s tym problem ziadny cviciaci mat nebude, lebo ako vravim, nie je zamerom zatazovat vas sialenymi kodmi pre lexikalnu analyzu.

orsi

no tak pome k hlavnemu problemu  :D ako zreťaziť int * string a string * int aby bol vysledok string?
skusil som takyto trik, kompilator sa nestazoval, ale program nefungoval a padol. nejake napady ma niekto?

....je to vo funkcii MonoType* Evaluate(ExpTree* tree)  ktora ohodnocuje vyrazy. PO typovej kontrole, ktora prebehla spravne samozrejme.

tu je switch a jednotlive pripady roznych typov sa ohodnocuju
toto som si vytvoril na int * string (aj do typovej kontroly to vlozil volanie na tento case)

case MUL_INT_STRING_OP:
cellLeft = Evaluate(tree->binaryop.leftTree);
cellRight = Evaluate(tree->binaryop.rightTree);
itoa(cellLeft->intval, cellLeft->stringval, 10);
cellLeft->stringval = strcat(cellLeft->stringval, cellRight->stringval);
return cellLeft;

mino

Ja som pouzil fcie sprintf() a strdup() ...

matus217

#483
Quote from: orsi on  25.11.2011, 04:33:54
no tak pome k hlavnemu problemu  :D ako zreťaziť int * string a string * int aby bol vysledok string?
skusil som takyto trik, kompilator sa nestazoval, ale program nefungoval a padol. nejake napady ma niekto?

....je to vo funkcii MonoType* Evaluate(ExpTree* tree)  ktora ohodnocuje vyrazy. PO typovej kontrole, ktora prebehla spravne samozrejme.

tu je switch a jednotlive pripady roznych typov sa ohodnocuju
toto som si vytvoril na int * string (aj do typovej kontroly to vlozil volanie na tento case)

case MUL_INT_STRING_OP:
cellLeft = Evaluate(tree->binaryop.leftTree);
cellRight = Evaluate(tree->binaryop.rightTree);
itoa(cellLeft->intval, cellLeft->stringval, 10);
cellLeft->stringval = strcat(cellLeft->stringval, cellRight->stringval);
return cellLeft;


char x[8];
...
itoa (cellLeft->intval, x, 10);
cellLeft->stringval = x;
...

np  8)

mishelka

Quote from: orsi on  23.11.2011, 20:06:28
Quote from: milaninho on  23.11.2011, 17:28:39
1. upravis lexikalnu gramatiku aby boli podporovane nove vstupne typy ktore mas podporovat;
uz tu je problem lebo vaclavik vymyslel to ze string nebude zacinat a koncit uvodzovkami. co je dost neprijemna vec naprogramovat kedze nemam pevne dany koncovy znak. aspon prve pokusy mi nevysli, asi len cisto na to nacitanie si musim daky program skusit vytvorit. :D
Kedze string sa sklada len z velkych alebo malych pismen, tak koncovy znak je kazdy iny ako velke alebo male pismeno... Podotykam, ze string musi zacinat malym pismenom.
  

#define TRUE FALSE //Happy debugging suckers :D

orsi

Quote from: mishelka on  25.11.2011, 17:58:03
Kedze string sa sklada len z velkych alebo malych pismen, tak koncovy znak je kazdy iny ako velke alebo male pismeno... Podotykam, ze string musi zacinat malym pismenom.
dobre toto je idealny pripad, ktory som spravil. a co ked zadam 78247jhfsjfJSFHSJ87872adhjASj76 ??
vypisalo by integer, retazec, integer, retazec, integer. tak som to opravil aby vypisal jeden velky ERROR. a to nebolo jednoduche. len toľko k tomu.

mishelka

#486
no ved zotavenie musi byt naimplementovane ;) to sa neriesi v lexikalnej analyze, ale v zotaveni. V lex. analyze by to nacitalo symboly ako si napisal, retazec, cislo, retazec, cislo, .... S chybami a vysledkom sa vysporiada interpretator a zotavenie, pricom vysledkom by bola prva polozka.

Este raz opakujem, ze definicia zadania u mna (a pokial viem aj u peta vaclavika) je taka, ze string su len pismena
  

#define TRUE FALSE //Happy debugging suckers :D

Cici

Quote from: ultimate on  24.11.2011, 01:03:00
riadna pisomka na papier bude, ziadne moodle a klikaci test s moznostami  >:(
asi som zas bol v risi snov a nie na prednaske :/

drakeman

No a už mám toho dosť...
Chcem vedieť podľa čoho sa vyhodnocuje výraz z požiadaviek:    true||(2||3)  -> true

počul som už 4 verzie:
1. keďže je naľavo true tak to musí byť true
2. 2||3 to sa neda lebo tam musia byť 1 alebo 0 iné to nemá zmysel
3. 2||3 vysledok je false lebo 2 je mensie ako 3 ak by bolo vacsie je to true
4. 2||3 vysledok je false lebo 2 sa nerovna 3, ak by bolo 2||2 bolo by to true...

bu bu bu
BTW: nemam zadanie OR a AND ale MUL a DIV, chcem to vedieť zo zvedavosti nie z povinnosti a nehovorte mi že keď to nemusím vedieť tak nech sa radšej nestarám :P vdaka...

Tren

Quote from: tomas4578 on  26.11.2011, 05:44:24
No a už mám toho dosť...
Chcem vedieť podľa čoho sa vyhodnocuje výraz z požiadaviek:    true||(2||3)  -> true

počul som už 4 verzie:
1. keďže je naľavo true tak to musí byť true
2. 2||3 to sa neda lebo tam musia byť 1 alebo 0 iné to nemá zmysel
3. 2||3 vysledok je false lebo 2 je mensie ako 3 ak by bolo vacsie je to true
4. 2||3 vysledok je false lebo 2 sa nerovna 3, ak by bolo 2||2 bolo by to true...

bu bu bu
BTW: nemam zadanie OR a AND ale MUL a DIV, chcem to vedieť zo zvedavosti nie z povinnosti a nehovorte mi že keď to nemusím vedieť tak nech sa radšej nestarám :P vdaka...
spravne je podla 4.) a bude TRUE || FALSE vysledok TRUE  ;) ( nic ine nerobis len porovnavas ci su rovnake, ked hej TRUE ked nie FALSE )

Fanky

Quote from: tomas4578 on  26.11.2011, 05:44:24
No a už mám toho dosť...
Chcem vedieť podľa čoho sa vyhodnocuje výraz z požiadaviek:    true||(2||3)  -> true

počul som už 4 verzie:
1. keďže je naľavo true tak to musí byť true
2. 2||3 to sa neda lebo tam musia byť 1 alebo 0 iné to nemá zmysel
3. 2||3 vysledok je false lebo 2 je mensie ako 3 ak by bolo vacsie je to true
4. 2||3 vysledok je false lebo 2 sa nerovna 3, ak by bolo 2||2 bolo by to true...

bu bu bu
BTW: nemam zadanie OR a AND ale MUL a DIV, chcem to vedieť zo zvedavosti nie z povinnosti a nehovorte mi že keď to nemusím vedieť tak nech sa radšej nestarám :P vdaka...
operátor || bude realizovať porovnanie čísel, kde návratovou hodnotou je logická
hodnota true alebo false (ak sú rovnaké, true, ak sú rôzne, false).

Cici

tak ako Tren pise -ak by si tam nemal zatvorku tak zavisi od asociativity

milaninho

false||(2||3) -> false
false||(3||3) -> true

esperian

chcel by som sa spytat ze ak mam krat a delene, a pouzivam krat na spajanie stringov, tak tie slova maju byt napisane s malym pismenom zaciatocnym alebo cele slovo?

veteran

Quote from: esperian on  28.11.2011, 21:20:57
chcel by som sa spytat ze ak mam krat a delene, a pouzivam krat na spajanie stringov, tak tie slova maju byt napisane s malym pismenom zaciatocnym alebo cele slovo?
Ako napíšeš, tak bude, nie?

Ja keď dám 2*"FeRo", tak mi to vypľúva 2FeRo.
Keď dám "Fero"*"JANO", tak mi vypíše FeroJANO.

Dúfam, že to je dobre, lebo sa mi to už veľmi nechce prerábať.  ;D

drakeman

veteran:
string musi zacinat s malym pismenom... cvicaci povedal ze ak ti vezme aj velke tak to uz nie je podla zadania spravne... ale myslim ze dajaky postih z toho nebude...
lebo ako ja som tam mal napriklad aj float a mi povedal ze si ho mam dat prec lebo podla zadania mi to nema brat a potom mam vlastne zle zadanie... takze si to oprav aby ti to bralo iba slova s prvym pismenkom malym... :)

drakeman

zadania 1-14 mám už hotové :)
ešte musím dokončiť 15-28 :D
sranda... celkom ma to baví :)

veteran

Quote from: tomas4578 on  28.11.2011, 21:52:01
veteran:
string musi zacinat s malym pismenom... cvicaci povedal ze ak ti vezme aj velke tak to uz nie je podla zadania spravne... ale myslim ze dajaky postih z toho nebude...
A sakra...

Prichádza na rad použitie fcie tolower() ;D

veteran

Quote from: tomas4578 on  28.11.2011, 21:52:52
zadania 1-14 mám už hotové :)
ešte musím dokončiť 15-28 :D
sranda... celkom ma to baví :)
Vypýtaj si 28*10 bodov  ;D

SteLa

Neaky sikovnik co bol dnes na fjap a ma sajnu co asi bolo??? Neake poznamky nemozte poskytnut?