Mathematische Gleichung nach Variablen aufteilen C++



  • Hallo,
    Ich nutze Borland und bin noch ein ziemlicher Anfänger was C++ angeht wäre also für Hilfe echt dankbar.

    Wie kann man eine Gleichung a*x^2+b*x+c aufteilen in die Variablen a b und c?

    Ich hab schon versucht die Gleichung als String einzulesen und dann aufzuteilen mit sscanf hat aber nicht geklappt.

    Wenn ich es mit sscanf versuche sieht das ganze so aus:
    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;
    }
    es ist mir allerdings noch nicht gelungen die "3*x^2+4*x+1" Gleichung als eingabe einzulesen, dann liest das Programm immer nur die erste Zahl.



  • Das ist gar nicht so einfach. Dafür brauchst du einen Parser.
    bosst::spirit kann dir da einige Arbeit abnehmen. Allerdings ist es dauch dann noch nichts für einen Anfänger.

    Aber du kannst ja die Variablen nach einem gewissen Schema einlesen. Dann bist du aber auf eine die Reihenfolge angewiesen und auch dass der Use weiss, was verlangt wird.



  • so erstmal:
    wir sind hier im C++ bereich, da hat C nicht viel zu suchen
    deshalb:

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
       string equation = "3*x^2+4*x+1";
       double a, b, c;
    
       cout << "x^2 * "; 
       cin >> a;
       cout << "x * ";
       cin >> b;
       cout << "+ ";
       cin >> c;
    
       // getline(cin, equation);
    
       cout<<"a= " << a << "b= " << b << "c= " << c << endl;
       return 0;
    }
    

Log in to reply