ahoj, může mi někdo poradit...mám udělat program, do kterýho se zadá řetězec znaků (např: 2+3*4-2+6....) a následně se spočtou. tušim jak by se to mělo dělat, ale nevim jak to sepsat.
ahoj, může mi někdo poradit...mám udělat program, do kterýho se zadá řetězec znaků (např: 2+3*4-2+6....) a následně se spočtou. tušim jak by se to mělo dělat, ale nevim jak to sepsat.
pomocí shunting yard algoritmu to převedeš na RPN (postfix), který zpracovat je už jednoduché. Alternativou je odvodit si bezkontextovou gramatiku výrazů (což není jednoduchý, ale pro tohle se to určitě dá najít na googlu) a naimplementovat ji jako rekurzivní sestup. Podrobnější info viz wiki. A jo, není to nic jednoduchýho/rychlýho...
4300 2997 | 2048 667 | 8600 256 | 640 7200 | 250 7200
It is a scientifically proven fact, that use of English signatures at Czech discussion boards is sign of mental retardation :-p
Vsechno zalezi od toho, jak dany retezec muze vypadat.
Obecne je to jednoducha uloha na prekladac.
Na tohle by mela stacit lexikalni a syntaticka analyza, abych vedel, co mi vubec muze prijit. Z toho se jiz da postavit strom a vyhodit vysledek.
Tady jsou i celkem pekne ukazky: http://cs.wikipedia.org/wiki/P%C5%99eklada%C4%8D http://cs.wikipedia.org/wiki/Bezkont...3%A1_gramatika
Pokud by gramatika byla dostatecne jednoducha, tak by to slo napsat i z hlavy. Vse tedy zalezi na dane gramatice.
EDIT: OK, moje reseni je obecne a o uroven niz, s tim Shunting-yard algorithm by to mela byt hracka. Keymaster K+
Naposledy upravil monsoon; 08.12.2010 v 03:22.
Fanless Experiment || Gigabyte Z77-DS3H | Intel i5-3570K | Thermalright HR-02 | 16G DDR3 | Sapphire HD 7750 Ultimate | Crucial M4 256GB | Seasonic X-400FL | Fractal Define R4
Dell D430 || i945G | C2D 1.2G ULV | 2G DDR2 533 | GMA950 | 12" 1280x800 | 80G 4k2 | 802.3ab | 802.11g | 802.15.1 | HSDPA | Windows 7 x64
Storage || i965G | E2200 | 4G DDR2 | RAID5 6x Samsung HD154UI 1.5TB - ~7TiB | 802.3ab ...powered by Ubuntu Server x64
Accessories || E-MU Tracker Pre USB 2.0 | Meier Corda Headsix | Sony MDR-CD470 | Pioneer A-204R | Tesla ARS 9218 32 | LG 32LD350
"Music is essentially useless, as life is." George Santayana
to je na mě poněku složité, v jave se nepohybuju dlouho. potřeboval bych poradit, něco s cyklava.atd. chtěl bych to udělat, tak že si zadanej výraz procházim cyklem a zjištůju o jaké operátory se jedná a u každého operátoru si vezmu předchozí a následující číslo u a poté vykonám danou operaci....
ať to uděláš jakkoliv, začni lexikální analýzou, tj. vyparsuj z toho stringu sérii tokenů (číslo, operátor), jinak se z toho pos****š. Ale ten shunting yard je nejjednodušší, věř mi...
Pokud jsi naprosto začátečník, tak jsi to buď dostal ve škole jako úkol, a seš v háji, protože ses měl líp učit, nebo to děláš jako soukromej projekt, takže máš možnost se na to buď vykašlat s tím že to zatím není nic pro tebe, nebo se do toho pustit a naučit se něco novýho![]()
4300 2997 | 2048 667 | 8600 256 | 640 7200 | 250 7200
It is a scientifically proven fact, that use of English signatures at Czech discussion boards is sign of mental retardation :-p
Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)