Fehler im Programm (gelöst)



  • Das Taschenrechner Programm lässt sich einwandfrei Compilen, aber bei der Eingabe gibt es wieder den eingegeben Wert aus.

    AUFBAU
    *
    main()

    Ein- und Ausgabe

    fkt()

    Auswertung
    *

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <cmath>
    using namespace std;
    
    double fkt(char, double);
    
    main(void)
    {
        char eingabe1; // eingabe 1: operator
        double eingabe2; // eingabe2: zahl
    
        system("title TITLE");
    
        cout<< "= " << 0 << endl;
    
        do
        {
            cin>>eingabe1;
            cin>>eingabe2;
            cout<< fkt(eingabe1, eingabe2) << endl;
        }
        while(getch() !=27);
    }
    
    double fkt(char a, double x)
    {
        static double tmp = 0;
    
        switch(a)
        {
            case '+':
                return(tmp+x);
            case '-':
                return(tmp-x);
            case '*':
                return(tmp*x);
            case '/':
                return(tmp/x);
            case '^':
                return(pow(tmp, x));
            case '|':
                return(pow(tmp,(1/x)));
            default:
                return(0);
        }
    }
    


  • Und warum sollte es was anderes tun?

    0+1=1
    0-3=-3
    Und beim Rest stimmt das ergebnis!
    0*93=0
    0/3214=0 DU MACHST HIER KEIN /0 FEHLERABFRAGE!
    usw.



  • daumen schrieb:

    Und warum sollte es was anderes tun?

    0+1=1
    0-3=-3
    Und beim Rest stimmt das ergebnis!
    0*93=0
    0/3214=0 DU MACHST HIER KEIN /0 FEHLERABFRAGE!
    usw.

    Na weil sein tmp statisch ist! 🙄

    Du musst vor dem return das ergebnis auch shcon zu tmp dazuzählen!

    case '+':
    tmp+=x;
    //...

    return tmp;



  • [quote="Mittelfinger"]

    daumen schrieb:

    Du musst vor dem return das ergebnis auch shcon zu tmp dazuzählen!

    case '+':
    tmp+=x;
    //...

    return tmp;

    Ach ja, stimmt! Voll vergessen! Danke!


Log in to reply