Problem mit Rechen Programm
-
Also wenn ich das Programm starte und die 1 drücke und dann als erste zahl eine 3
und als zweite zahl auch eine 3 eingebe kommt daraus 27 das is ja auch ok
aber wenn ich dann wieder die 1 drücke um nochmal etwas zu berechnen. Dann komme ich ja
wieder zu dem Hauptmenü dort wo ich das hoch rechnen auswählen kann das is ja auch noch ok
aber wenn ich dann wieder als erste zahl eine 3 eingeben und als zweite zahl auch wieder eine 3
dann bekomme ich das als ergebniss 729 raus -.- was is da falsch an dem source code ?#include <iostream> using namespace std; int main() { int a,b,wahl,nochmal; int erg=1; do { system("CLS"); cout<<"Taschenrechner\n"; cout<<"\n"; cout<<"1=Hoch rechnen\n"; cout<<"\n"; cin>>wahl; switch (wahl==1) { system("CLS"); case 1: cout<<"Erste Zahl:\n"; cin>>a; cout<<"Zweite Zahl:\n"; cin>>b; for(int i=0;i<b;i=i+1) { erg =erg*a; } } cout<<a<<" hoch "<<b<<" ist "<<erg<<"\n\n"; cout<<"\n"; cout<<"Wollen sie noch etwas berechnen? 1=Ja 2=Nein\n"; cin>>nochmal; } while (nochmal==1); system("PAUSE"); }
-
for "cin" solltest du immer den Eingabepuffer leeren. Habs grad nicht genau im Kopf, aber cin.clear() und cin.ignore(...).
Und da wir hier ja kein C programmieren, können die Variablen ruhig da deklariert werden, wo man sie braucht. Also die Variable "wahl" kurz bevor wahl eingelesen wird usw
-
Du hast vergessen, die Variable 'erg' vor der innersten for()-Schleife zurückzusetzen.
PS:
system("cls");sollte erstens nicht verwendet werden (siehe FAQ) und ist zweitens an dieser Stelle sowieso wirkungslos (nicht erreichbar). Und über die Bezeichnungen "erste Zahl" und "hoch nehmen" sage ich jetzt lieber nichts.
-
switch(wahl) { case 1: ... //viele Anweisungen break; }
-
CStoll was meinst du mit zurücksetzen?
-
Am Ende der ersten Berechnung behält erg den ermittelten Wert (in deinem Beispiel 27) - bevor du etwas sinnvolles damit machen kannst, mußt du den wieder auf 1 setzen.
(btw, wenn du das Programm um weitere Rechenoperationen erweitern willst, empfielt es sich sowieso die Zuweisung 'erg=1;' unmittelbar vor der Rechenschleife unterzubringen)
@Badestrand: Ja, der Eingabepuffer von cin ist mitunter ein Problem - in dem Fall jedoch nicht

-
Aber wie kann ich den auf 1 setzen hab keine Ahnung wie das geht oder wo ich das nachgucken kann

-
Bass schrieb:
Aber wie kann ich den auf 1 setzen hab keine Ahnung wie das geht oder wo ich das nachgucken kann

int main() { //int a,b,wahl,nochmal; weg //int erg=1; weg int nochmal; do { ... int wahl; // Neu cin>>wahl; int erg = 1; // Neu switch (wahl==1) { system("CLS"); case 1: { int a, b; // Neu ... } while (nochmal==1); system("PAUSE"); }
-
Sry Badestrand aber da blick ich nich deuch was meinst du mit neu und mit diesen puntken ....

-
Bass schrieb:
Aber wie kann ich den auf 1 setzen hab keine Ahnung wie das geht oder wo ich das nachgucken kann

Am besten geht das mit einer Zuweisung "erg=1;"
Oder du definierst die Variablen erst an der Stelle, an der sie gebraucht werden - siehe Badestrand's letzten Beitrag.(du kannst auch versuchen, die Variable lange genug anzustarren, bis sie sich selber zurücksetzt
*scnr*)Edit:
Sry Badestrand aber da blick ich nich deuch was meinst du mit neu und mit diesen puntken ....
"Neu" kennzeichnet die Stellen deines Ursprungsprogramms, wo du etwas ändern solltest, die Punkte sind Auslassungen, die du aus deinem Ursprungsbweitrag auffüllen solltest.
(mitdenken ist wohl nicht deine Stärke?)
-
Ich hab mit gedacht aber n paar punkte und 1 Wort sagen mir nicht viel -.-
-
Bass schrieb:
Sry Badestrand aber da blick ich nich deuch was meinst du mit neu und mit diesen puntken ....

Auch tschuldigung, war irgendwie zu faul noch was dazuzuschreiben

-
Jetzt hats geklappt wieso erklärt ihr mir das so kompliziert
Source Code Vorher:
#include <iostream> using namespace std; int main() { int a,b,wahl,nochmal; do int erg=1; //<------------- das war falsch { system("CLS"); cout<<"Taschenrechner\n"; cout<<"\n"; cout<<"1=Hoch rechnen\n"; cout<<"\n"; cin>>wahl; switch (wahl) { system("CLS"); case 1: cout<<"Erste Zahl:\n"; cin>>a; cout<<"Zweite Zahl:\n"; cin>>b; for(int i=0;i<b;i=i+1) { erg =erg*a; } } cout<<a<<" hoch "<<b<<" ist "<<erg<<"\n\n"; cout<<"\n"; cout<<"Wollen sie noch etwas berechnen? 1=Ja 2=Nein\n"; cin>>nochmal; } while (nochmal==1); system("PAUSE"); }Source Code nachher:
#include <iostream> using namespace std; int main() { int a,b,wahl,nochmal; do { system("CLS"); int erg=1; //<----- so geht es cout<<"Taschenrechner\n"; cout<<"\n"; cout<<"1=Hoch rechnen\n"; cout<<"\n"; cin>>wahl; switch (wahl) { system("CLS"); case 1: cout<<"Erste Zahl:\n"; cin>>a; cout<<"Zweite Zahl:\n"; cin>>b; for(int i=0;i<b;i=i+1) { erg =erg*a; } } cout<<a<<" hoch "<<b<<" ist "<<erg<<"\n\n"; cout<<"\n"; cout<<"Wollen sie noch etwas berechnen? 1=Ja 2=Nein\n"; cin>>nochmal; } while (nochmal==1); system("PAUSE"); }Aber trotzdem thx für eure Behmühungen