Výpočty v TextBoxu   zodpovězená otázka

VB.NET, WinForms

Visual Basic 2008 Express Edition

Ahoj,

tak nějak se zatím ve VB2008 jen rozkoukávám a potřeboval bych poradit s matematickým výpočtem v textboxu.

Přičemž do textboxu píšu celý vzorec např 2+2+3*3

Výsledek po kliknutí na Button1 zapisuji do stejného textboxu.

Jaký by byl asi tak nejelegantnější způsob.

Děkuji za případné rady.

Sari

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Příklad musíte rozložit a spočítat. Není to úplně banální záležitost. Musíte si napsat parsovač, který rozdělí příklad na čísla a operátory do nějakého rozumného stromu výrazů. Ten pak vyvoláte.

Jde to udělat i jednodušeji, ale né tak elegantně a bez možnosti rozšíření. Obě řešení vyžadují teoretickou přípravu odvíjející od vašich znalostí programování.

Například to lze udělat takto:

- rozdělit výraz na pole objektů (2, +, 2, +, 3, *, 3)

- procházet operátory podle priority (*, /, +, -)

- - - provádět matematické operace na číslech kolem operátoru

- - - nahradit operátor a čísla kolem něj výsledkem

- zkontrolovat, zda po dokončení existuje v poli pouze jedno číslo - výsledek - pokud ano, máme vyhráno - v opačném případě někde zůstal nerozparsovatelný člen

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Děkuji za rychlou odpověď a nasměrování správným směrem :-)

Jdu na sobě pracovat.

Bohužel nemohu označit příspěvek jako odpověď.

Pravděpodobně proto, že jsem nebyl zaregistrován (?).

Proto prosím admina za označení příspěvku jako odpověď.

Děkuji

Sari

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Něco málo k problému naleznete také v tomto článku: http://www.vbnet.cz/blog-clanek--189-vys...

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback