Summanten und Koeffizienten



  • Hallo,

    Ich habe hier ein Programm, dass bereits Formeln mit Koeffizienten mit Exponenten ausrechnen kann. Es fragt erst nach dem Term (z.B. 2,5*x^3,4) und dann nach dem xWert. Dann sucht er in dem Term nach einem Koeffizienten, guckt nach, ob ein Komma existiert und sucht danach nach dem x samt ^ und der darauf folgenden Zahl, also dem Exponenten (auch mit Kommazahl). Das Programm ist ansonsten selbsterklärend, denke ich. Wenn nicht stellt mir Fragen.

    Mein Vorhaben ist nun, dass ich mit einzelnen Summanten rechnen kann, also einen Term wie 2*x+x^2 eingeben kann. Könnt ihr mir da weiterhelfen? Meine Versuche sind bisher alle fehlgeschlagen.

    Vielen Dank im Vorraus
    ANYmonKEY

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #include <conio.h>
    #include <iostream.h>
    #include <math.h>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    char term[80];
    int pos = 0;
    double arg, wert, d = 0.1, koeff;
    
    //Ist an der Stelle pos eine Zahl?
    int isnumber()
    {
     if(term[pos] < '0') return 0;
     if(term[pos] > '9') return 0;
    
     return 1;
    }
    
    //Koeffizienten bestimmen
    double koeffizienten()
    {
           while (term[pos] != '*' && term[pos] != 'x')
           {
                 switch (term[pos])
                 {
                    case '*':
                         pos++;
                    break;
    
                    //Welche Zahl?
                    case '0': case '1': case '2': case '3': case '4':
                    case '5': case '6': case '7': case '8': case '9':
                         koeff = koeff*10 + (term[pos]-'0');
                         pos++;
                    break;
    
                    //Dezimalzahl als Koeffizient
                    case '.':
                         pos++;
                         while (isnumber())
                         {
                               koeff += (term[pos]-'0')*d;
                               d *= 0.1;
                               pos++;
                         }
                    break;
                 }
           }
    
           return koeff;
    }
    
    main()
    {
        double exp=0;
    
        cout<<"\nTerm eingeben: "; cin>>term;
        cout<<"\n\x eingeben: "; cin>>arg;
    
        //Koeffizient bestimmen
        koeffizienten();
    
        while(term[pos] != '\0')
        {
           switch(term[pos])
           {
            //x-Wert auslesen:
            case 'x':
                 wert = arg;
            break;
    
            //Exponent auslesen:
            case '^': pos++;
                      while(isnumber())
                      {
                       exp = exp*10 + (term[pos]-'0');
                       pos++;
                      }
    
            //Dezimalzahl als Exponent
            case '.': pos++;
                      while (isnumber())
                      {
                       exp += (term[pos]-'0')*d;
                       d*= 0.1;
                       pos++;
                      }
            break;
           }
           pos++;
        }
    
        if (koeff == 0)
                  koeff = 1;
    
        wert = koeff * pow(arg,exp);
    
        cout<<"\n\tWert: "<< wert;
        getch();
    }
    //---------------------------------------------------------------------------
    


  • Hallo,
    nur mal eine frage zum prog. ich habe keine #include <vcl.h>.
    aber es leuft trozdem plos wen ich was eingebe dan kan ich hier warten und es pasirt nichts auser das es 50% der prozerauslastung hat.

    was mach ich den falsch?

    MFG TaccoGo



  • ok jetzt get es. 🙂

    wegen den summiren
    wie were es wen du den string beim + trenst dan die eine siete rechnen im dem prog. und dan die ander und vor der ausgabe adiren.

    MFG TaccoGo


Anmelden zum Antworten