Aojte ako by sa dalo v jave spravit take niečo :
-mal by som text area
-donho by som napisal 12+4=x a stlačil enter
-program by vypisal o riadok nižšie x=16 čiže sučet /zavyselo by to od prikladu
Nechem od nikoho program len rady ako na to.
Ja som rozmyslal že by som ten text načital a potom išiel postubne znak po znaku a najdene cisla by som si zapisoval a keby som narazil na znamienko tak by sa momocou switchu vykonala určita operácia
neviem vôbec či to ide v jave ..tak by som poprosil o pomoc
[JAVA] Praca s retazcom
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
pheo
Light Star
- Príspevky: 212
- Registrovaný: 20 sep 2005, 16:53
- Bydlisko: moje hniezdo
- Kontaktovať používateľa:
v java to ide
a krásne -> bud ako audiotrack napísal budeš používať ten switch -a všetky oprácie musia byť rovnakej úrovne , tead 3 +3 + 3 je 9 ale 3 + 3 *3 ti uz pomota vypocet (ma vyst 12 pretoze * ma vyzsiu prioritu)
Na to mozes pouzit algoritmus rekurzivneho zostupu: vytvoríš si gramatiku podľa ktorého danný výraz postupne rozpársujejš a použiješ rekurzie. Jednoduchšie je však použiť nejaký generátor- mrkni antlr ten je cely v java
Na to mozes pouzit algoritmus rekurzivneho zostupu: vytvoríš si gramatiku podľa ktorého danný výraz postupne rozpársujejš a použiješ rekurzie. Jednoduchšie je však použiť nejaký generátor- mrkni antlr ten je cely v java
-
TGiJack
Medium Star
- Príspevky: 419
- Registrovaný: 30 nov 2006, 19:37
- Bydlisko: NO
- Kontaktovať používateľa:
no ktým zátvorkám ..tak to som tiež premyšlal ale je to mooc chaoticke (aspon sa mi zda) ze by som si tan priklad pomocou tých zatvoriek rozkuzkovam na menšie tak ze bol by priklad napr 4*( 13 + (10*2)*3)+2;
postup: CYKLUS-znova by som išiel znak po znaku a zapisomval by som všetko do pola kým by som na narazil na zatvorku "(" tento znak by ma posunol a pole vyššie pricom bz som si niekde pripocitaval kolko zatvoriek som nasiel:
pole[0] = 4*z1+2
narazil som na "("
pole[1] = 13+z2 .. znova zatvorka
pole[2] = 10*2 narazil by som na znak zatvorky ale ")" ,tak by som odpocital z poctu zatvoriek a vratil by som sa o pole spat
pole[1] += *3 cyklus by znova pokracoval az by narazil na dalsiu zatvorku a posunul by sa znova o pole spat
pole[0] += +2
cele toto sialenstvo by skoncilo ak narazim na znak ";"
=z{cislo} je nieco ako adresa pola
stoho by som mal dostat pole s "jednoduchymi" poctami,kt. by som dalej spracovaval..
Myslite ze by mohlo takto nejako vyzerat "rozpitvanie" zadaneho prikladu?? prosim vas o rady,postrehy a pripomienky a ich riesenie
postup: CYKLUS-znova by som išiel znak po znaku a zapisomval by som všetko do pola kým by som na narazil na zatvorku "(" tento znak by ma posunol a pole vyššie pricom bz som si niekde pripocitaval kolko zatvoriek som nasiel:
pole[0] = 4*z1+2
narazil som na "("
pole[1] = 13+z2 .. znova zatvorka
pole[2] = 10*2 narazil by som na znak zatvorky ale ")" ,tak by som odpocital z poctu zatvoriek a vratil by som sa o pole spat
pole[1] += *3 cyklus by znova pokracoval az by narazil na dalsiu zatvorku a posunul by sa znova o pole spat
pole[0] += +2
cele toto sialenstvo by skoncilo ak narazim na znak ";"
=z{cislo} je nieco ako adresa pola
stoho by som mal dostat pole s "jednoduchymi" poctami,kt. by som dalej spracovaval..
Myslite ze by mohlo takto nejako vyzerat "rozpitvanie" zadaneho prikladu?? prosim vas o rady,postrehy a pripomienky a ich riesenie