Taschenrechner



  • Ich weiß nicht was ich hier falsch gemacht habe, der Compiler gibt mir ständig Fehlermeldungen raus, er würde cin und cout nicht kennen. Habe das Programm in Module unterteilt. Wäre nett wenn ihr mir helfen könntet:

    // Dateiname: Taschenrechner.h
    #ifndef _TASCHENRECHNER_H_INC_
    #define _TASCHENRECHNER_H_INC_

    // Funktionsdeklarationen
    double add (double ergebnis);
    double sub (double ergebnis);
    double mult (double ergebnis);
    double div (double ergebnis);
    double mod (double ergebnis);

    #endif // _TASCHENRECHNER_H_INC_

    //Dateiname: Taschenrechner.cpp
    #include "stdafx.h"
    #include "Taschenrechner.h"
    #include <iostream>
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    //Begrüßung
    cout << endl << "WILKOMMEN ZUM TASCHENRECHNER" << endl;
    cout << "Dieser Rechner kann addieren (+), subtrahieren (-), multiplizieren (*)," << endl;
    cout << "dividieren (/), sowie Modulo-Operation durchfuehren (%)" << endl;
    cout << "Eingabe erfolgt: Zahl Zeichen Zahl zB.: 5 + 4" << endl << endl;
    char beenden = '\0';

    do
    {
    //Abfrage ob Programm beendet werden soll.
    cout << "Moechten Sie weiterrechnen ja = j; nein = n: ";
    cin >> beenden;
    switch (beenden)
    {
    //Eingabe der Rechenaufgabe
    case 'j':
    {
    cout << endl << "Ihre Eingabe: ";
    double linkerOperand = 0.0;
    char operatorSymbol = '\0';
    double rechterOperand = 0.0;
    cin >> linkerOperand >> operatorSymbol >> rechterOperand;

    //Sprung zu den einzelnen Rechenoperationen
    switch (operatorSymbol)
    {
    //Addition
    case '+':
    {
    double ergebnis = 0;
    add(ergebnis);
    } break;

    //Subtraktion
    case '-':
    {
    double ergebnis = 0;
    sub (ergebnis);
    } break;

    //Multiplikation
    case '*':
    {
    double ergebnis = 0;
    mult (ergebnis);
    } break;

    //Division
    case '/':
    {
    double ergebnis = 0;
    div (ergebnis);
    } break;

    //Modulo Operation
    case '%':
    {
    int ergebnis = 0;
    mod (ergebnis);
    } break;

    //Falsches Operatorsymbol
    default:
    {
    cout << "Waehlen Sie nur zwischen + - * / oder % als Rechenzeichen" << endl << endl;
    } break;
    }
    //Sprung aus dem Programm
    case 'n':
    {
    cout << "Auf Wiedersehen!" << endl;
    } break;

    //Fehlermeldung Beenden Abfrage
    default:
    {
    cout << "Waehlen Sie nur zwischen j und n" << endl;
    } break;
    }
    }
    } while (beenden != 'n');
    return 0;
    }

    //Taschenrechner.cpp
    #include <iostream>
    #include "stdafx.h"
    #include "Taschenrechner.h"
    using namespace std;

    double add (double ergebnis)
    {
    double linkerOperand = 0;
    double rechterOperand = 0;
    ergebnis = linkerOperand + rechterOperand;
    cout << "Das Egebnis lautet: " << endl;
    return ergebnis;
    }

    double sub (double linkerOperand, rechterOperand)
    {
    double linkerOperand = 0;
    double rechterOperand = 0;
    ergebnis = linkerOperand - rechterOperand;
    cout << "Das Egebnis lautet: " << endl;
    return lergebnis;
    }

    double mult (double ergebnis)
    {
    double linkerOperand = 0;
    double rechterOperand = 0;
    ergebnis = linkerOperand * rechterOperand;
    cout << "Das Egebnis lautet: " << endl;
    return ergebnis;
    }

    double div (double ergebnis)
    {
    double linkerOperand = 0;
    double rechterOperand = 0;
    //Fall Ganzzahldivision
    if ((int (linkerOperand) == linkerOperand) && (int (rechterOperand) == rechterOperand) && (rechterOperand != 0))
    {
    cout << endl << "Moechten sie eine Ganzzahldivision durchfuehren? ja = j; nein = n : ";
    char ganzzahlDivision = '\0';
    cin >> ganzzahlDivision;
    //Sprung zu Ganzzahldivision ja oder nein.
    switch (ganzzahlDivision)
    {
    case 'j':
    {
    int ergebnis = int (linkerOperand) / int (rechterOperand);
    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
    } break;

    case 'n':
    {
    double ergebnis = linkerOperand / rechterOperand;
    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
    } break;

    default:
    {
    cout << "Bitte waehlen Sie nur zwischen j und n" << endl << endl;
    } break;
    }
    }
    //Division durch Null
    else if (rechterOperand == 0.0)
    {
    cout << "Division durch Null ist verboten!" << endl << endl;
    }
    //Gleitkommadivision
    else
    {
    double ergebnis = linkerOperand / rechterOperand;
    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
    return ergebnis;
    }
    }

    double mod (double ergebnis)
    {
    double linkerOperand = 0;
    double rechterOperand = 0;
    //Überprüfung auf korrekte Eingabe. Falls richtig eingegeben erfolgt Berechnung.
    if ((int (linkerOperand) == linkerOperand) && (int (rechterOperand) == rechterOperand) && (rechterOperand > 0))
    {
    int ergebnis = int (linkerOperand) % int (rechterOperand);
    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
    }
    else if (rechterOperand <= 0)
    {
    cout << "Die Zahl mit der geteilt wird muss positiv und darf nicht Null sein." << endl << endl;
    }
    else
    {
    cout << "Die Modulo-Operation kann nur mit ganzen Zahlen durchgefuert werden." << endl << endl;
    }
    return ergebnis;
    }

    Gruß
    Thorsten



  • zeig bitte mal die genauen Fehlermeldungen
    und Code-Tags benutzen 🙂



  • Heinzelotto, unter welchem Benutzernamen warst du vorher angemeldet?



  • Also habe ein Projekt angelegt in MS Viusal Studio 2005, Win32 KOnsolenanwendung. Habe alles sorgfältig eingebunden. Aber bringt mir immer diese scheiß Fehlermeldung raus.

    cin und cout nichtdeklarierter Bezeichner. An was kann das hängen?

    Gruß
    T



  • Heinzelottto schrieb:

    Heinzelotto, unter welchem Benutzernamen warst du vorher angemeldet?

    ?
    ich war noch nie hier angemeldet, wieso denkst du, ich sei schon einmal angemeldet gewesen?

    Aber bringt mir immer diese scheiß Fehlermeldung raus.

    kopiere den genauen Wortlaut hier rein, dann können wir dir vielleicht helfen.



  • Falls du iostream schon eingebunden hast, dann fehlt dir entweder irgendwo am Anfang der Datei ein

    using namespace std;
    

    oder du schreibst bei jeder Verwendung von cin oder cout ein

    std::cout /*...*/;
    std::cin /*...*/;
    

    Kommentare sind wegzudenken



  • Hallo.
    Kann es sein, weil du "#include <iostream>" anstatt "#include <iostream.h>" geschrieben hast?



  • Maethu schrieb:

    Hallo.
    Kann es sein, weil du "#include <iostream>" anstatt "#include <iostream.h>" geschrieben hast?

    Nein. #include <iostream> ist schon richtig.



  • - die geschweiften Klammern sind falsch gesetzt. In Zeile 101 ist eine '}' zuviel, dafür fehlt '}' nach Zeile 90.
    - In der Deklaration von 'sub' fehlt der Typ 'double' vorm 2.Parameter 'rechterOperand'
    - In 'sub' sind die ersten beiden Deklaration überflüssig (Zeile 125,126) und vor 'ergebnis' fehlt wieder der Typ (double)
    - In Zeile 129 ist ein Schreibfehler, es muss 'return ergebnis;' heißen.
    - In der Funktion 'div' fehlen zwei 'return'-Statements in der if-Kaskade (vor Zeile171 und 176) - besser Du machst 'ergebnis' in der gesamten Funktion gültig.

    Wenn Du das alles korrigiert hast, lässt es sich vielleicht übersetzen, funktioniert aber nicht.
    Tipp: fange erstmal klein an (z.B. nur Addition) bis das sauber funktioniert und dann füge die Operationen einzeln hinzu und teste das Ergebnis jedesmal ausgiebig.
    Und beschäftige Dich nochmal ausführlich mit der Gültigkeit von Variablen-Deklarationen.

    die oben angegebenen Zeilennummern beziehen sich auf den Code unten

    // Dateiname: Taschenrechner.h
    #ifndef _TASCHENRECHNER_H_INC_
    #define _TASCHENRECHNER_H_INC_
    
    // Funktionsdeklarationen
    double add (double ergebnis);
    double sub (double ergebnis);
    double mult (double ergebnis);
    double div (double ergebnis);
    double mod (double ergebnis);
    
    #endif // _TASCHENRECHNER_H_INC_
    
    //Dateiname: Taschenrechner.cpp
    #include "stdafx.h"
    #include "Taschenrechner.h"
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        //Begrüßung
        cout << endl << "WILKOMMEN ZUM TASCHENRECHNER" << endl;
        cout << "Dieser Rechner kann addieren (+), subtrahieren (-), multiplizieren (*)," << endl;
        cout << "dividieren (/), sowie Modulo-Operation durchfuehren (%)" << endl;
        cout << "Eingabe erfolgt: Zahl Zeichen Zahl zB.: 5 + 4" << endl << endl;
        char beenden = '\0';
    
        do
        {
            //Abfrage ob Programm beendet werden soll.
            cout << "Moechten Sie weiterrechnen ja = j; nein = n: ";
            cin >> beenden;
            switch (beenden)
            {
                //Eingabe der Rechenaufgabe
            case 'j':
                {
                    cout << endl << "Ihre Eingabe: ";
                    double linkerOperand = 0.0;
                    char operatorSymbol = '\0';
                    double rechterOperand = 0.0;
                    cin >> linkerOperand >> operatorSymbol >> rechterOperand;
    
                    //Sprung zu den einzelnen Rechenoperationen
                    switch (operatorSymbol)
                    {
                        //Addition
                    case '+':
                        {
                            double ergebnis = 0;
                            add(ergebnis);
                        } break;
    
                        //Subtraktion
                    case '-':
                        {
                            double ergebnis = 0;
                            sub (ergebnis);
                        } break;
    
                        //Multiplikation
                    case '*':
                        {
                            double ergebnis = 0;
                            mult (ergebnis);
                        } break;
    
                        //Division
                    case '/':
                        {
                            double ergebnis = 0;
                            div (ergebnis);
                        } break;
    
                        //Modulo Operation
                    case '%':
                        {
                            int ergebnis = 0;
                            mod (ergebnis);
                        } break;
    
                        //Falsches Operatorsymbol
                    default:
                        {
                            cout << "Waehlen Sie nur zwischen + - * / oder % als Rechenzeichen" << endl << endl;
                        } break;
                    }
                    //Sprung aus dem Programm
            case 'n':
                {
                    cout << "Auf Wiedersehen!" << endl;
                } break;
    
                //Fehlermeldung Beenden Abfrage
            default:
                {
                    cout << "Waehlen Sie nur zwischen j und n" << endl;
                } break;
                }
            }
        } while (beenden != 'n');
        return 0;
    }
    
    //Taschenrechner.cpp
    #include <iostream>
    #include "stdafx.h"
    #include "Taschenrechner.h"
    using namespace std;
    
    double add (double ergebnis)
    {
        double linkerOperand = 0;
        double rechterOperand = 0;
        ergebnis = linkerOperand + rechterOperand;
        cout << "Das Egebnis lautet: " << endl;
        return ergebnis;
    }
    
    double sub (double linkerOperand, rechterOperand)
    {
        double linkerOperand = 0;
        double rechterOperand = 0;
        ergebnis = linkerOperand - rechterOperand;
        cout << "Das Egebnis lautet: " << endl;
        return lergebnis;
    }
    
    double mult (double ergebnis)
    {
        double linkerOperand = 0;
        double rechterOperand = 0;
        ergebnis = linkerOperand * rechterOperand;
        cout << "Das Egebnis lautet: " << endl;
        return ergebnis;
    }
    
    double div (double ergebnis)
    {
        double linkerOperand = 0;
        double rechterOperand = 0;
        //Fall Ganzzahldivision
        if ((int (linkerOperand) == linkerOperand) && (int (rechterOperand) == rechterOperand) && (rechterOperand != 0))
        {
            cout << endl << "Moechten sie eine Ganzzahldivision durchfuehren? ja = j; nein = n : ";
            char ganzzahlDivision = '\0';
            cin >> ganzzahlDivision;
            //Sprung zu Ganzzahldivision ja oder nein.
            switch (ganzzahlDivision)
            {
            case 'j':
                {
                    int ergebnis = int (linkerOperand) / int (rechterOperand);
                    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
                } break;
    
            case 'n':
                {
                    double ergebnis = linkerOperand / rechterOperand;
                    cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
                } break;
    
            default:
                {
                    cout << "Bitte waehlen Sie nur zwischen j und n" << endl << endl;
                } break;
            }
        }
        //Division durch Null
        else if (rechterOperand == 0.0)
        {
            cout << "Division durch Null ist verboten!" << endl << endl;
        }
        //Gleitkommadivision
        else
        {
            double ergebnis = linkerOperand / rechterOperand;
            cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
            return ergebnis;
        }
    }
    
    double mod (double ergebnis)
    {
        double linkerOperand = 0;
        double rechterOperand = 0;
        //Überprüfung auf korrekte Eingabe. Falls richtig eingegeben erfolgt Berechnung.
        if ((int (linkerOperand) == linkerOperand) && (int (rechterOperand) == rechterOperand) && (rechterOperand > 0))
        {
            int ergebnis = int (linkerOperand) % int (rechterOperand);
            cout << "Das Ergebnis ist: " << ergebnis << endl << endl;
        }
        else if (rechterOperand <= 0)
        {
            cout << "Die Zahl mit der geteilt wird muss positiv und darf nicht Null sein." << endl << endl;
        }
        else
        {
            cout << "Die Modulo-Operation kann nur mit ganzen Zahlen durchgefuert werden." << endl << endl;
        }
        return ergebnis;
    }
    

    Gruß
    Werner


Anmelden zum Antworten