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