Funktionen verarbeiten



  • Ja hab ich schon gesucht...aber leider nix gefunden!
    Ich hab aber auch keine idee wie ich das machen könnte.... 😞



  • Hallo

    Zuerst überlegst du dir, was für Trennzeichen vorkommen können, also +,-,*,/. Dann suchst du im Ausgangsstring mit
    int Pos = s.AnsiPos("+") ;
    nach jedem einzelnem Zeichen und merkst dir das Trennzeichen, das als erstes im String vorkommt (Zeichen, die nicht vorkommen, haben eine Position von 0 und fallen weg). Dann kannst du mit SubString deine nächste Operation abtrennen.
    Dann machst du solange beim Trennzeichen-Suchen weiter, bis du kein Trennzeichen mehr findest. Der rest ist deine letzte Operation.

    bis bald
    akari



  • und was wäre wenn ich auf die keypress reagiere?

    Also auf VK_ADD etc...?

    Nur dazu müsste ich ja die eingegebene Zahl bevor die taste gedrückt wird speichern, und dann mit der zahl die danach kommt berechnen.....hm...oder?



  • Hallo

    dieses Thema kennst du ja, da stehen ein paar Hinweise drinne.
    http://www.c-plusplus.net/forum/viewtopic.php?t=98038
    Allerdings ist doch ein Mathe Parser und einem Taschenrechner mit "Echtzeit-Eingabe" von der Bedienung her zu unterschiedlich. Ich sehe nicht, wie du das verbinden willst.

    bis bald
    akari



  • also du musste dich als erstes entscheiden, ob du die Rechnung im Voraus eingeben willst und beim "Enter-Klick" das ganze ausrechnen willst.
    oder ob du bei jedem "operator-klick" zwischenresultate berechnen willst.
    beim ersten Fall solltest du mal das tutorial für AnsiString durchlesen, da dort intressante sachen zum zerlegen eines AnsiStrings steht und beim zweiten schau den link von akari an, dort wird das gerade diskutiert

    BigNeal



  • nun gut...so richtig konnte mir das nicht helfen, dieser Thread oben, weil es da ja nur um standardberechnungen geht!

    Aber ich brauch was, das wenn ich x²-3x+5 eingebe, er mir eben p und q herausließt!

    Das muss aber auch funktionieren wenn die formel 4x-3 lautet, oder 4x²+23x-99!

    SO richtig find ich einen geeigneten ansatz nicht!

    ich könnte natürlich das über eingabe erkennen lassen, das er nach dem ² bis zum x das als p erkennt, und nach dem 2ten Operator das als q, aber wie?!



  • Das ist genau das was akari gemeint hat, du musst dir einen Parser bauen und dann die Eingabe verarbeiten.

    Achja, Potenzierung wird so dargestellt: Basis^Exponent; Bsp.: 2^10.

    Edit: Und such mal bei Google nach "Mathe" und "Parser" (wie von akari bereits erwähnt)



  • ja mit der potenzierung habe ich nur so geschrieben das es anschaulicher ist!

    Schade, ich dachte eben es hat schon jemand mal so einen ähnlichen gemacht...weil ich keine lust habe extra einen zu bauen.... 🙄 👎



  • nimm doch einfach den ganzen Rechnungsstring über die Rechnungsoperatoren auseinander (+-/*)
    aus
    4x²+23x-99
    wird dan zB
    4x^2
    23x
    -99
    jetzt musst du nur noch rausfinden ob x in der ersten potenz oder in der 2ten potenz vorkommt, dan hast du dein q und p..
    wirf sonst mal noch einen blick ins mathematik forum.. aber ich denke nicht, dass die sich noch mit so etwas simplen abgeben 🕶

    BigNeal



  • nein, wie das berechnet wird ist ja kein problem...nur eben die funktion richtig verarbeiten!


Anmelden zum Antworten