Announcement

Collapse
No announcement yet.

Rechenformel aus einem Textfeld berrechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rechenformel aus einem Textfeld berrechnen

    Hallo,

    wie kann man eine Formel z.B. "4+5*2+(3*3)" berrechnen ?

    Ich möchte die Formel in eine Inputbox eingeben können und dann sollte diese berrechnet werden.

    Gibt es eine Möglichkeit eine solche Formel aus der Textbox von C# zu berrechnen zu lassen ?

    Im voraus besten Dank für Eure Mühe

    Gruß Jürgen

  • #2
    Ein fertigen Formelparser gibt es nicht im Framework.
    Eine Suche auf Codeproject liefert aber ein paar Treffer die dir weiterhelfen sollten.

    Comment


    • #3
      Erstell Dir aus dem Text eine Liste:

      4
      +
      5
      *
      2
      +
      (
      3
      *
      3
      )


      In der ersten Schleife durchsuchst Du die Liste von 0 bis <Count nach dem Zeichen ")". Wenn Du es gefunden hast, von dort rückwärts nach dem Zeichen "(". In diesem Fall würdest Du also 6 für den Klammerstart und 10 für das Klammerende bekommen. Der Eintrag 10 wird zuerst gelöscht, dann der Eintrag 6. Die Einträge 7 bis 9 liegen nun auf Position 6 bis 8. Mit diesen beiden Werten wird die nächste Schleife aufgerufen.



      In dieser Schleife durchsuchst Du den Bereich nach den Zeichen "*" und "/". Aus den beiden Zahlen davor und dahinter wird das Ergebnis berechnet. Der erste Faktor hat in diesem Fall die Listenposition 6. An Position 6 wird nun dreimal das Listenelement gelöscht und dann das Zwischenergebnis eingefügt. Der Zähler für das Schleifenende muss um 2 erniedrigt werden.


      Wenn kein “*“ oder “/“ mehr gefunden wird, dann mit den verbliebenen Start und Endwerten in einer weiteren Schleife nach den Zeichen “+“ und “-“ suchen. Und wieder die gleiche Prozedur: Zwischenergebnis berechnen, drei Einträge löschen, Zwischenergebnis einfügen und Schleifenende um 2 erniedrigen. Und wenn hier nix mehr ist, geht es in der ersten Schleife von vorne los, bis da nur noch ein Eintrag drin ist.


      Etwas komplizierter wird es, wenn weitere Berechnungen wie SQRT, POW, LOG, SIN… hinzukommen, oder Variablen verwendet werden sollen…
      Günther

      Comment


      • #4
        Hallo,

        siehe zB Parser für mathematische Formeln


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X