Simpler Taschenrechner macht Probleme
-
Hallo mal an alle

Ich bin neu hier.
Seit einigen Wochen habe ich mit c++ angefangen.
Nun wollte ich einen Taschenrechner programmieren.
Hier mal meine Version^^
int main() { int zahl1,zahl2, erg; int rz; cout<<"1.zahl"; cin>>zahl1; cout<<"2.zahl"; cin>>zahl2; if (rz='+') erg=zahl1+zahl2; if(rz='-') erg=zahl1-zahl2; cout<<"+ oder -"; cin>>rz; cout<<erg; }So sieht das bei mir aus.
Das Problem: Der Rechner rechnet nur minus, auch wenn ich plus eingebe
Was ist da falsch?
Ich denke irgendwo fehlen klammernmfg
mfg
-
in if-Abfragen muss man == verwenden, da du mit = nur eine Zuweisung machst und keinen Vergleich. rz sollte auch ein Char sein! Die Reihenfolge stimmt nicht, du machst die EIngabe nach der Auswertung...
-
aso mal danke.
aber was meinst du mit der reinfolge?
mfg
-
Ein Programm wird quasi immer von oben nach unten ausgeführt (bildlich), wenn du also die Eingabe von rz nach der Nutzung von if( rz == '+') machst, wie du es tust, dann hat dein Programm undefiniertes Verhalten. Du musst natürlich deine Eingabe vor der Abfrage machen, damit der Wert auch überprüft werden kann.
Dein code mit Kommentaren:
int main() { int zahl1,zahl2, erg; int rz; //zr wird definiert aber nicht initialisiert und kann theoretisch jeden Wert haben. cout<<"1.zahl"; cin>>zahl1; cout<<"2.zahl"; cin>>zahl2; if (rz='+') //rz hat hier noch immer einen beliebigen Wert! macht nicht sinn oder? erg=zahl1+zahl2; if(rz='-')//rz hat hier noch immer einen beliebigen Wert! macht nicht sinn oder? erg=zahl1-zahl2; cout<<"+ oder -"; cin>>rz; // Ab hier entspricht rz der Eingabe des Benutzers cout<<erg; // Das Ergebnis ist nicht bestimmt und eher zufällig }
-
HighLigerBiMBam schrieb:
int rz; //zr wird definiert aber nicht initialisiert und kann theoretisch jeden Wert haben. if (rz='+') //rz hat hier noch immer einen beliebigen Wert! macht nicht sinn oder? if(rz='-')//rz hat hier noch immer einen beliebigen Wert! macht nicht sinn oder?Du hast es zwar schon einmal explizit erwähnt, aber trotz allem würde ich Kommentare mit ihrem Bezug zu synchronisieren ("
==" statt "=").
-
Hallo,
Auf Anhieb sehe ich drei Probleme, nämlich:
1. Du liest das Rechenzeichen in die Variable 'rz' nicht ein.
2. Die Variable 'rz' ist vom Typ int, sollte aber char sein
3. Du benutzt den Operator '=' in deinen if-Abfragen, statt '=='Gruss,
samyboy
-
es ist ja nicht so, dass dies schon vor 3 Stunden geposted wurde @ Sammy
-
So sollte das ganze funktionieren:
#include <iostream> using namespace std; int main () { float zahl1, zahl2 char rz; //Eingabe cout<<"1.zahl"; cin>>zahl1; cout<<endl; cout<<"2.zahl"; cin>>zahl2; cout<<endl; cout<<"+ oder -"; cin>>rz; //Verarbeitung if (rz == '+') erg = zahl1 + zahl2; if(rz == '-') erg = zahl1 - zahl2; //Ausgabe cout<<endl<<erg; }Ich hab anstelle von int, float geschrieben damit du auch sehr sehr sehr große zahlen rechnen kannst.