[C/C++] [Hilfe] Problem mit auslesen eines Edit-Feldes

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Pac_-_man, 15. Oktober 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Oktober 2006
    [Hilfe] Problem mit auslesen eines Edit-Feldes

    Hi!

    Also ich hab folgendes Problem. Ist wahrscheinlich nicht so schwer, aber ich habe sowas noch nie gemacht.

    Ich habe zwei Werte: X und f(x) und eine Funktionsgleichung, z.B.: f(x)=3*x*(x+2)*x-5.

    Nun steht die Funktionsgleichung aber in einem Edit-Feld (also als Strings). Ich möchte aber, das das Programm mit der Funktionsgleichung arbeiten kann. Das heißt aus den ganzen Strings müssen nun Integers, Floats, und Rechenoperatoren werden.
    Meine Frage:

    Wie stelle ich das an? Von welchem Typ muss eine Variable sein, die eine Funktionsgleichung mit rechenoperatoren, integers, etc. beinhalten kann, so das das Programm damit rechnen kann?

    PS: Ich arbeite mit dem CBuilder, falls das wictig ist. wollte auch nochmal fragen, ob es Header-Dateien gibt, die man includieren kann um komplexere mathematische Dinge zu rechnen? z.B. Sinus-/Winkel-Funktionen... usw.

    Freue mich über antworten! Hoffe ich hab mein Problem deutlich genug beschrieben.

    MFG
    Pacman
     
  2. 15. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Du musst die Gleichung selber scannen und auswerten, fertige functionen oder classen gibt es da nicht soweit ich weis.

    Ja gibt es, die sollte "math" heißen.
     
  3. 15. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Aber wie lese ich die Gleichung so ein, das ich sie auswerten kann? ich meine, so das sie verwendet werden kann. ich muss die Strings ja in irgendwas umwandeln, aber in was?

    MFG
    Pacman
     
  4. 16. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Ausgabe-EditfeldFX->Text = StrToInt (EditfeldX->Text) * 3 *(StrToInt(EditfeldX->Text)+2)*(-5).

    Sollte so klappen.Du kannst auch anstatt StrToInt StrToFloat benutzen, wenn du eine Variable vom Typ Float brauchst.

    Aber bitte an die Try-catch schleife denken, weil man nur Zahlen eingeben darf
     
  5. 16. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Nee, das meine ich nicht^^ Dann würde ich die Gleichung ja in den Quellcode schreiben, aber das ist ja das ding dabei. Der Anwender vom Programm soll sie praktisch selbst in den Quellcode schreiben (also ins Edit-Feld und das Programm soll damit arbeiten). Aber in was wandle ich den Inhalt des Edit-Feldes um? mit StrToInt() oder StrToFloat() wird das ja nichts, weil Klammern oder *-Zeichen keine ints oder floats sind.
     
  6. 16. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Mach dir eine rekursive funktion welche auch klammern berücksichtig und das ganze parst, sodass du eine funktion immer mit 3 parametern aufrufst, zahl1, zahl2 und rechenoperator.

    Schau dir mal rekursive Funktionen an, speziell welche um gleichungen zu lösen findeste massig im Netz.

    FlowFlo
     
  7. 16. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Ok jetzt verstehe ich, was du meinst!
    Dabei muss der String Zeichen für Zeichen durchgearbeitet werden und dabei die Zahlen erkennen und diese In einen Floatvariabole schreiben und die Zeichen dann so impretieren das die Variablen dann addiert, subtrahiert usw. werden, dabei gibts Problemme zb Punk vor Strich rechung Klammern und so weiter, am besten geht das wenn man die X durch die Zahl ersetzt die man einsetzen will also durch den String der Zahl und dann fangt man an "von innen nach ausen" die Aufgabe zu lössen also wird zuerst die innerste klammer ausgerechnet und durch die dazu gehörige Zahl als Sting eretzt .......
    "x * ( x + 2)" zuerst werden die X durch eine bestimmte Zahl ersetzt zb 10.
    "10 * (10 + 2)" dann wird die Klammer seperat ausgerechnet also wird die klamer raus koppiert "(10 + 2)" dan werden die zahlen in variablen umgewandelt und zussamen adiert und dann wieder in den einen string umgewandelt also "(10 + 2)" wird durch "12" erestz
    "10 * 12" und zum shcluss werden dann dies auch wieder rum ausgerechnet.
    Ich hoffe, dass ich das jetzt richtig verstanden habe =)
     
  8. 16. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    Nun, was du suchst ist ein Parser! (Parser – Wikipedia)
    Und das ist alles gar nicht mal so einfach, wie es sich anhört. Zunächst benötigst du erstmal eine formale Grammitik (Formale Grammatik – Wikipedia), die festlegt was gültig ist und was nicht, mit der kannst du entweder dann von Hand einen Parser schreiben oder mit Hilfe von Tools wie yacc den Code generieren lassen.
    Allerdings würde ich dir empfehlen erstmal bei google nach entsprechenden Parser-Bibliotheken zu suchen, da das (wenn man es richtig machen will) nicht unbedingt trivial ist und es bestimmt schon jede Menge solcher Lib's gibt!
     
  9. 21. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    ok... werd mich damit mal befassen. dachte es wäre einfacher, aber naja, muss ich wohl durch^^ Vielen Dank erstmal für die Antworten. Bewertung raus an Ktm123 und ResusPos. Thx!

    MFG
     
  10. 21. Oktober 2006
    AW: [Hilfe] Problem mit auslesen eines Edit-Feldes

    ~closed~

    Mfg,

    Kolazomai
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.