Mathematische Gleichung zerlegen

robind

Grünschnabel
Hallo.

Ich bin Newbie in C++ und möchte zur Übung ein Programm schreiben, dass eine quadreatische Gleichung der Form a*x^2+b*x+c löst. Klappt auch schon ganz gut, wenn ich a, b und c separat abfrage.

Nun möchte ich das Programm bisschen verbessern, indem einfach die Gleichung eingeben werden soll und das Programm zerlegt den String dann in die Teile a, b, c, wobei diese drei Variablen nachher vom Typ float sein müssen.

Kann mir da jemand ein Denkanstoß geben, so dass das auch mit -b und -c funktioniert?

Gruß Robin
 
Denke mal nicht das es so einfach wird. Wir haben das mal als Info-Aufgabe bekommen, also so ähnlich, man könnte einen rekursiven Parser schreiben, vllt gehts auch einfacher aber ich denke nicht das das eine Aufgabe für einen Anfänger ist :)

Du musst z.B. "^"-Zeichen interpretieren, unterscheiden ob Zahl oder operator usw.
 
Hallo,

er will ja den Term nicht parsen und danach auswerten, sondern einfach nur die 3 Parameter extrahieren.

Schau mal:

C:
#include <stdio.h>

int main(){
    char *equation = "3*x^2+4*x+1";
    double a, b, c;
    sscanf(equation, "%lf*x^2%lf*x%lf", &a, &b, &c);
    printf("a= %lf b= %lf c= %lf\n", a, b, c);
    return 0;
}

siehe http://www.cplusplus.com/sscanf

//edit musste bisl nachbessern wegen
Kann mir da jemand ein Denkanstoß geben, so dass das auch mit -b und -c funktioniert?

Gruß,
RedWing
 
Zuletzt bearbeitet:
Achso ok na denn, coole Lösung wieder was gelernt, achja bezüglich des Vorzeichens, das Formatzeichen berücksichtigt das bereits ;-)
 
Achso ok na denn, coole Lösung wieder was gelernt, achja bezüglich des Vorzeichens, das Formatzeichen berücksichtigt das bereits ;-)

Ja deswegen hab ichs editiert ;).
Hatte vorhin auch schon überlegt nen neuen Post zu schreiben, dann sieht man wenigstens die Änderungen.

So cool ist die Lösung auch wieder nicht ;) Is ja nur ein relativ einfaches Zerlegen eines Strings. Wenn man den kompletten Term auswerten will müsste man,wie dus schon erwähnt hast, schwereres Geschütz auffahren.

Gruß,
RedWing
 

Neue Beiträge

Zurück