Wo liegt der Fehler in meinem Code?
#include<iostream>
using namespace std;
int main() {
double st;
double nd;
char* operator;
double Ergebnis;
cout << "Gebe an mit was die Rechnen willst" << endl;
cout << "Addition(+)Subtraktion(-)Multiplikation(*)Division(/)" << endl;
cin >> operator;
switch (operator) {
case: (operator == '+')
cout << "Geben Sie die erste Zahl an, mit der Sie rechnen möchten" << endl;
cin >> st;
cout << "Geben Sie die zweite Zahl an, mit der Sie rechnen möchten" << endl;
cin >> nd;
double Ergebnis = st + nd;
cout << "Das Ergebnis ist" << Ergebnis;
break;
case: (operator == '-')
cout << "Geben Sie die erste Zahl an, mit der Sie rechnen möchten" << endl;
cin >> st;
cout << "Geben Sie die zweite Zahl an, mit der Sie rechnen möchten" << endl;
cin >> nd;
double Ergebnis = st - nd;
cout << "Das Ergebnis ist" << Ergebnis;
break;
case: (operator == '*')
cout << "Geben Sie die erste Zahl an, mit der Sie rechnen möchten" << endl;
cin >> st;
cout << "Geben Sie die zweite Zahl an, mit der Sie rechnen möchten" << endl;
cin >> nd;
double Ergebnis = st * nd;
cout << "Das Ergebnis ist" << Ergebnis;
break;
case: (operator == '/')
cout << "Geben Sie die erste Zahl an, mit der Sie rechnen möchten" << endl;
cin >> st;
cout << "Geben Sie die zweite Zahl an, mit der Sie rechnen möchten" << endl;
cin >> nd;
double Ergebnis = st / nd;
cout << "Das Ergebnis ist" << Ergebnis;
break;
default:
cout << "Gebe einen gültigen Operator an" << endl;
break;
}
return 0;
}
Ich bin noch ein Anfänger und lerne gerade C++. Kann mir hier jemand helfen? Gemini und ChatGPT sind zu dumm dafür.
1 Antwort
1) Deine Variable operator musst du umbenennen, da operator in C++ ein bereits reserviertes Schlüsselwort ist.
2) Die Variable operator müsste den Typ char (nicht char*) bekommen. Dann kann die Konsoleneingabe via cin in die Variable gegeben werden.
3) Deine cases sind alle in der Formulierung falsch. Der zu prüfende Wert kommt vor den Doppelpunkt. Er wird mit dem Wert aus dem Kopfbereich verglichen. Also:
switch (rechenoperator) {
case '+':
/* ... */
case '-':
/* ... */
/* etc. ... */
}
4) Die Variable Ergebnis hast du bereits vor dem switch deklariert. Du kannst sie daher innerhalb des Konstrukts nicht erneut deklarieren (es sei denn, du würdest die Anweisungen der jeweiligen cases in explizite Code-Blöcke einbetten).
Belasse es einfach bei einer Definition:
double ergebnis;
/* ... */
switch (rechenoperator) {
case '+': {
/* ... */
ergebnis = st + nd;
cout << "Das Ergebnis ist " << ergebnis;
break;
/* etc. ... */
Im Übrigen würde ich dir empfehlen, schon jetzt schon darauf zu achten, eindeutige und ausdrucksstarke Bezeichner für deine Variablen zu finden (also nicht st oder nd) und dich dabei an üblichen Code-Konventionen zu orientieren (lokale Variablen beginnen üblicherweise mit einem Kleinbuchstaben).