[JAVA] Praca s retazcom

Programovacie jazyky, rady, poradňa...
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

[JAVA] Praca s retazcom

Príspevok od používateľa TGiJack »

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
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ísť to ide, postup si si napísal. Bude ti to fungovať pokiaľ nepotrebuješ rátať príklady napríklad so zátvorkami
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

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
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Príspevok od používateľa mirak2 »

my sme take nieco zapisovali do stromu, kde listy boli cisla a uzly znamienka operacii...ak ti to pomoze
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

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
Napísať odpoveď