Frage von Bluekilla, 93

Warum funktioniert dieser Code nicht (c++)?

Hey, ich hab mal versucht nen einfachen Taschenrechner in c++ zu proggen^^ kann mir jemand sagen wonder fehler ist? Das problem ist, dass er das ergebnis nicht ausgibt. Hier der code.
.
.
#include <iostream>

using namespace std;

int main ()

{
    
int Zahl1; //erstellt Variabeln
int Zahl2;
int Rechenzeichen;
int Ergebnis_Plus;
int Ergebnis_Minus;
int Ergebnis_Mal;
int Ergebnis_Geteilt;

while(Zahl1 >= -100000000){ //Code wird wird immer wiederholt

cout << "Geben sie die Erste Zahl ein:"; //Text
cin >> Zahl1; //fragt Zahl 1 und 2 ab
cout << "Geben sie die Zweite Zahl ein:";
cin >> Zahl2;
cout << "Geben sie ein Rechenzeichen ein (+,-,,/)";
cin >> Rechenzeichen;
switch ( Rechenzeichen ){
    
    case '+' :
    Ergebnis_Plus = Zahl1 + Zahl2;
    cout << Ergebnis_Plus << endl; //Gibt Ergebnis aus
    break;
    
    case '-' :
    Ergebnis_Minus = Zahl1 - Zahl2;
    cout << Ergebnis_Minus << endl; //Gibt Ergebnis aus
    break;
    
    case '
' :
    Ergebnis_Mal = Zahl1 * Zahl2;
    cout << Ergebnis_Mal << endl; //Gibt Ergebnis aus
    break;
    
    case '/' :
    Ergebnis_Geteilt = Zahl1 / Zahl2;
    cout << Ergebnis_Geteilt << endl; //Gibt Ergebnis aus
    break;
}

                                                }
}

Danke im Vorraus :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von andie00, 18

Ändere

int Rechenzeichen

zu

char Rechenzeichen
Antwort
von PeterKremsner, 40

Versuch mal nach dem cin ein cout zu setzen.

Zb cout << "Berechne..."<<endl;

Ich hab mich in C++ nie mit dem cout anfreunden können, von da her weis ich nicht ob und wie der die Integer in einen String Kovnertiert.

Ich würde sagen du versucht die cout mal durch printf("Ergebnis: %ld\n",Zahl) zu ersetzen.

Btw für deine while-schleife kannst du auch einfach while(1) schreiben wenn du eine Endlosschleife willst.

Kommentar von Bluekilla ,

Ah danke :) ich probiers mal^^

Antwort
von JutenMorgen, 26

Als erstes solltest du mal (solltest du eigentlich nicht) "while(1)" schreiben.

Als nächstes kannst du einen character schlecht als integer abspeichern also den Datentypen von "Rechenzeichen" auf 'char' ändern.

Dann hast du bei deiner switch-abfrage noch das '*' vergessen.

Das könnte es schon gewesen sein, ansonsten einfach breakpoints setzen, dann siehst du ganz genau was deine Variablen machen und wo der Fehler liegt. 

Liebe Grüße, JutenMorgen!

Kommentar von Bluekilla ,

Was hab ich bei switch vergessen?

Kommentar von JutenMorgen ,

Du hast vergessen das *-Zeichen in deine brackets zu schreiben.

Ausserdem würde ich dir noch empfehlen 

default: cout << "Wrong operator!" << endl; 
break;

oder so zu verwenden...

Liebe Grüße, JutenMorgen!

Antwort
von Tschoo, 34

Hallo!

Er kann kein Ergebnis zeigen, da er nie in die while-Schleife kommt -- oder was ist der Anfangswert von Zahl1?

Kommentar von Bluekilla ,

Es gibt keinen, der soll ja vom benutzer definiert werden

Kommentar von Tschoo ,

... aber du benutzt ZAHL1, bevor der Benutzer die Möglichkeit hat, es zu definieren 
"while(Zahl1 >= -100000000)"

Ich weis nicht, wie C++ damit umgeht -- auf jeden Fall ist es im Sinne von klaren programmieren falsch.

Kommentar von PeterKremsner ,

Das sollte dem cout egal sein, ober er aus der While schleife kommt oder nicht.

Zumindest wenn dieses wie printf arbeitet sollte die Ausgabe sofort mit dem Aufruf der Funktion und nicht mit dem Programmende erfolgen.

Kommentar von Bluekilla ,

Danke habs jetzt in while(1) geändert nun kommt diese fehlermeldung: )Warning: getc() expects 1 parameters, 0 parameters given
错误文件路径(error file path):_iostream
哪行出错(wrong line):248
Warning: getc() expects 1 parameters, 0 parameters given
错误文件路径(error file path):_iostream
哪行出错(wrong line):248
!!! return from main() function

Antwort
von Copyyy, 20

"Rechenzeichen" ist ein int und kein String oder char..

Kommentar von Bluekilla ,

In dem code ist es doch ein int

Kommentar von Copyyy ,

Ja eben. Aber du gibst doch *, /, + und - ein. Und keines dieser Zeichen ist eine Zahl...

Kommentar von Bluekilla ,

Also muss ich char verwenden? Bei mir kommt eine fehlermeldung: )Warning: getc() expects 1 parameters, 0 parameters given
错误文件路径(error file path):_iostream
哪行出错(wrong line):248
Warning: getc() expects 1 parameters, 0 parameters given
错误文件路径(error file path):_iostream
哪行出错(wrong line):248
!!! return from main() function

Kommentar von Copyyy ,

Der Fehler muss den woanders liegen, solange du das * hast bei dem einen case. Bei mir läuft es mit Rechenzeichen als char ohne Probleme.

Kommentar von Bluekilla ,

Wo muss ich das * hinsetzen?

Kommentar von Copyyy ,

Du hast doch deine 4 cases. Einmal steht in den Anführungszeichen nichts

Keine passende Antwort gefunden?

Fragen Sie die Community