Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: String in mathematischen Ausdruck umwandeln

  1. #1
    Registered User
    Registriert seit
    May 2001
    Beiträge
    592
    Renommee
    182

    String in mathematischen Ausdruck umwandeln

    Ich habe einen String der nur ganze Zahlen und die vier Grundrechenarten plus Klammern enthält.
    z.B.
    Code:
    str="123+3*(6-3)";
    Jetzt soll der string aber ausgerechnet werden. Dazu habe ich keine einfache Möglichkeit gefunden. Momentan filtere ich mit REGEX die einzelnen Zahlen und die Operatoren raus, leider funktioniert das nicht mit den Klammern und mir fällt auch keine einfache Variante ein.
    Es sollte plattformunabhängig sein, da ich es mit Qt machen muss.

    Hat jemanden eine Idee?
    In der theoretischen Physik ersetzt man eine Kuh durch eine Kugel, die in alle Raumrichtungen isotrop Milch abgibt, zumindest in erster Näherung.

  2. #2
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    Re: String in mathematischen Ausdruck umwandeln

    Och, so schwer kann es nicht sein. Wir hatten so eine Aufgabe damals in der 11. Klasse. Ich war an dem Tag allerdings nicht da :)
    Hab mal kurz gegoogelt. Aus dem String erstellt man einen Baum. "Strukturbäume arithmetischer Ausdrücke" wäre ein gutes Stichwort.

    Hier gibt es unten auf der Seite ein Beispiel: http://www.cl.uni-heidelberg.de/kurs...l/page052.html

  3. #3
    Registered User
    Registriert seit
    May 2001
    Beiträge
    592
    Renommee
    182

    Re: String in mathematischen Ausdruck umwandeln

    Stimmt mit binären Bäumen würde es auch gehen, aber ich will ja nicht immer alles selber programmieren.
    Nach einer weiteren Suche fand ich einige Parser für mathematische Ausdrücke.
    Ich bin schließlich bei einem sehr simplen hängen geblieben[1].
    Damit wird die gesamte Arbeit ziemlich reduziert
    Code:
    #include "mathexpr.h"
    //[...]
    
    QString gesamteRechnung="14*(11-1)";
    char* cha;
    int erg;
    cha=gesamteRechnung.toAscii().data();
    ROperation p(cha);
    erg=p.Val();
    text.setNum(erg);
    gesamteRechnung=text;
    ui->TextFeld->setText(text);
    [1]http://www.yann-ollivier.org/mathlib/mathexpr.php
    In der theoretischen Physik ersetzt man eine Kuh durch eine Kugel, die in alle Raumrichtungen isotrop Milch abgibt, zumindest in erster Näherung.

  4. #4
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    Re: String in mathematischen Ausdruck umwandeln

    Uhm
    Note that I began writing this at a time when the C++ standard library did not exist.
    etwas als, aber das letzte Update ist von 2008. Aber für was einfaches langt es doch bestimmt. Ich stopf es mir mal in die Bookmarks. thx

  5. #5
    Administrator
    Registriert seit
    Jul 2002
    Beiträge
    2.552
    Renommee
    903

    Re: String in mathematischen Ausdruck umwandeln

    Ich würde jetzt ja doch Vermuten, dass der Sinn hinter dieser Aufgabe nicht ist, eine fertige Bibliothek zu benutzen ;-)
    Die Nacht ist die schönste Zeit des Tages,
    alle Bälger sind im Bett und die scheiß Sonne scheint auch nicht!

  6. #6
    Registered User
    Registriert seit
    Oct 2007
    Beiträge
    246
    Renommee
    234

    Re: String in mathematischen Ausdruck umwandeln

    ganz clever ist es auch, das an google zu übergeben und google es ausrechnen zu lassen. dann das ganze aus der seite parsen :)
    wieso selber rechnen, wenn andere es für dich erledigen können.

  7. #7
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    Re: String in mathematischen Ausdruck umwandeln

    Scherz?

  8. #8
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    Re: String in mathematischen Ausdruck umwandeln

    Haha.
    Nun von der technischen Seite her ist das natürlich interessant. Man stelle sich nur mal vor, der Ausdruck wird komplizierter und brauch 1 Tag Rechenzeit. Dann könnte man das aus irgendeinen fernen Hochleistungsrechner laufen lassen. Aber der hätte dann ein Interface wo man nicht kompliziert parsen muss %)

  9. #9
    Registered User
    Registriert seit
    May 2001
    Beiträge
    592
    Renommee
    182

    Re: String in mathematischen Ausdruck umwandeln

    Zitat Zitat von echox Beitrag anzeigen
    Ich würde jetzt ja doch Vermuten, dass der Sinn hinter dieser Aufgabe nicht ist, eine fertige Bibliothek zu benutzen ;-)
    Das ist keine Aufgabe für die Uni oder so, sondern ein Gefallen für jemanden und daher kann man sich die, wenn auch etwas veraltete, Bibliothek zu nutzen machen.
    In der theoretischen Physik ersetzt man eine Kuh durch eine Kugel, die in alle Raumrichtungen isotrop Milch abgibt, zumindest in erster Näherung.

  10. #10
    Moderator
    Registriert seit
    May 2002
    Beiträge
    653
    Renommee
    1014

    Re: String in mathematischen Ausdruck umwandeln

    Eigentlich sollte es recht einfach sein, falls man schon die "Tokenisierung" mittels RegEx erledigt hatte:
    http://en.wikipedia.org/wiki/Reverse...tfix_algorithm
    bzw. im Tanenbaum Buch war sogar so eine hübsche Tabelle mit Aktionen des zugehörigen Algorithmus:
    http://www.spsu.edu/cs/faculty/bbrow...tures/postfix/
    Oder man macht eben Infix->Postfix konvertierung und dann Postfix Interpretation (auch im obigem Link enthalten), die dann sehr einfach ist.
    Zum Umsetzen wird man aber die eine oder andere Stunde brauchen - insofern nur von Interesse, falls die Bibliothek nicht so ganz den Erwartungen/Wünschen entspricht.
    Geändert von CDW (24.06.2011 um 15:40 Uhr)
    Selig, wer nichts zu sagen hat und trotzdem schweigt!

  11. #11
    Registered User
    Registriert seit
    Oct 2007
    Beiträge
    246
    Renommee
    234

    Re: String in mathematischen Ausdruck umwandeln

    @gruena: nein kein Scherz. Hat an der Uni bei einem Projekt mal jemand in ein Programm eingebaut. War sehr erheiternd im Vortrag und der Prof meinte orginell.
    gib einfach bei google 1+1+1 ein oder einen anderen mathematischen Ausdruck.

  12. #12
    Registered User
    Registriert seit
    Nov 2003
    Beiträge
    21
    Renommee
    15

    AW: String in mathematischen Ausdruck umwandeln

    Ich würde es in prefix- oder postfix-notation umwandeln und dann ausrechnen...

  13. #13
    Registered User
    Registriert seit
    Feb 2004
    Beiträge
    800
    Renommee
    756

    AW: String in mathematischen Ausdruck umwandeln

    hmm, ob die aufgabe nach einem jahr noch aktuell ist ;)

  14. #14
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    402
    Renommee
    270

    AW: String in mathematischen Ausdruck umwandeln

    Hat eine Programmierfrage etwa ein Mindesthaltbarkeitsdatum. :D
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

  15. #15
    Registered User
    Registriert seit
    May 2001
    Beiträge
    592
    Renommee
    182

    AW: String in mathematischen Ausdruck umwandeln

    Frage hat sich erledigt, da das Programm bereits erfolgreich ausprobiert und für gut befunden wurde!
    In der theoretischen Physik ersetzt man eine Kuh durch eine Kugel, die in alle Raumrichtungen isotrop Milch abgibt, zumindest in erster Näherung.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. VB: Mathematischen Ausdruck in einem String berechnen.
    Von Wowbagger im Forum VisualBasic / VBScript
    Antworten: 6
    Letzter Beitrag: 12.02.2006, 21:03
  2. String in Char umwandeln?
    Von NeoXan im Forum C / C++
    Antworten: 6
    Letzter Beitrag: 18.05.2004, 11:08
  3. PChar in String umwandeln
    Von DeathDriver im Forum Pascal / Delphi
    Antworten: 2
    Letzter Beitrag: 29.09.2003, 18:42
  4. string in float umwandeln
    Von Le Hung im Forum Java
    Antworten: 10
    Letzter Beitrag: 26.03.2003, 23:09
  5. String in Ascii umwandeln
    Von Sabelrider im Forum Pascal / Delphi
    Antworten: 3
    Letzter Beitrag: 20.04.2001, 11:17

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •