• 7 odgovora
  • 3.599 pregleda
Kako izracunati izraz koji je u stringu 12.05.2011. u 00:07 · pre 188 meseci #1
Pozdrav,

Zanima me kako je, i da li je moguce izracunati izraz koji je dat kao string. Primer:

string s = "10 - 5 - 2";
double d = ...izracunat izraz...

Trazio sam po internetu i helpu, ali nisam uspeo da nadjem kako ovo da resim. Ukoliko moram rucno da parsiram ovaj string, da li neko moze da mi ustedi vreme i da mi link na kom se nalazi neki dobar lightweight parser.

Potrebno mi je da racuna samo ovako proste izraze, ukoliko naravno to nije moguce uraditi direktno iz C#-a.

Hvala puno!
Re: Kako izracunati izraz koji je u stringu 12.05.2011. u 01:01 · pre 188 meseci #3
Hvala na linku. Moze mi pomoci da sam sagradim parser.

Ali ako neko ima gotovo resenje, neka posalje, da ustedim vremem i izbegnem greske.
Re: Kako izracunati izraz koji je u stringu 12.05.2011. u 01:26 · pre 188 meseci #5
Hvala i Vama na linku.

Ali, zanimljiv mi je ovaj Poljski algoritam. Samo me zanima da li neko ima funkciju koja priprema izraz pred obradu; koja ovo:

5 + ((1 + 2) * 4) − 3

pretvara u

5 1 2 + 4 * 3 - +

Hvala
Re: Kako izracunati izraz koji je u stringu 12.05.2011. u 09:34 · pre 188 meseci #6
Jel mora da bude parser, zar ne možeš prosto da daš .net mašini da izračuna? Ono kao, napraviš string sa c# kodom i dinamički ga kompajliraš i izvršiš?

Ako ti to ne pomaže pogledaj ovo, zna sam da parsuje izraze a vredosti promenljivih mu dostavljaš u eventima (npr. izraz 2*a + 16 će da okine event u kome ćeš da mu kažeš kolio je a)
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Kako izracunati izraz koji je u stringu 12.05.2011. u 13:19 · pre 188 meseci #8
Citat:
Bokacio: Hvala i Vama na linku.

Ali, zanimljiv mi je ovaj Poljski algoritam. Samo me zanima da li neko ima funkciju koja priprema izraz pred obradu; koja ovo:

5 + ((1 + 2) * 4) − 3

pretvara u

5 1 2 + 4 * 3 - +

Hvala


Vrlo lako koriscenjem stack-a. Potrazi prebacivanje iz infix u postfix notaciju. Takodje mozes i da konstruises stablo izraza i da rekurzivno racunas vrednost.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme