TripleD Geschrieben 13. August 2003 Geschrieben 13. August 2003 Hallo, mach seit letztem Jahr ne Ausbildung als FiSi. Wir haben da in der Schule mit C++ angefangen, und ich hab nichts kappiert. Jetzt hab ich irgendwie bock das zu lernen. Beschäftige mich auch schon damit, und fang mal mit nem Taschenrechner Programm an. Ich hab das jetzt soweit fertig, aber irgendwie geht das nicht. Kann mir da mal vieleicht jemand helfen?? Hier mein Code: #include <iostream.h> #include <stdlib.h> #include <math.h> void main(void) { int zahl1; int zahl2; int ergebnis; int ausw; char ('a' || 'A'); //Addieren char ('s' || 'S'); //Subtrahieren char ('m' || 'M'); //Multiplizieren char ('d' || 'D'); //Dividieren char ('b' || 'B'); //Beenden Menue: cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl; cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl; cout<<"m/M = Multiplizieren oder d/D = Dividieren ein.\n"<<endl; cin>>"Bitte Auswaehlen: ">>ausw; /*Addieren*/ if(ausw=='a') { cout<<"Bitte erste Zahl eingeben: "; cin>>zahl1; cout<<"Bitte zweite Zahl eingeben: "; cin>>zahl2; ergebnis = zahl1+zahl2; cout<<"Das Ergebnis lautet: "<<ergebnis; cout<<"\n\n"; goto Menue; } /*Subtrahieren*/ else if(ausw=='s'||'S') { cout<<"Bitte erste Zahl eingeben: "; cin>>zahl1; cout<<"Bitte zweite Zahl eingeben: "; cin>>zahl2; ergebnis = zahl1-zahl2; cout<<"Das Ergebnis lautet: "<<ergebnis; cout<<"\n\n"; goto Menue; } /*Multiplizieren*/ else if (ausw=='m'||'M') { cout<<"Bitte erste Zahl eingeben: "; cin>>zahl1; cout<<"Bitte zweite Zahl eingeben: "; cin>>zahl2; ergebnis = zahl1*zahl2; cout<<"Das Ergebnis lautet: "<<ergebnis; cout<<"\n\n"; goto Menue; } /*Dividieren*/ else if (ausw=='d'||'D') { cout<<"Bitte erste Zahl eingeben: "; cin>>zahl1; cout<<"Bitte zweite Zahl eingeben: "; cin>>zahl2; ergebnis = zahl1/zahl2; cout<<"Das Ergebnis lautet: "<<ergebnis; cout<<"\n\n"; goto Menue; } else if (ausw=='b'||'B') { cout<<"Programm wird beendet"<<endl; return 0; } } Freu mich auf ne Antwort. Puma00 Zitieren
idefix Geschrieben 13. August 2003 Geschrieben 13. August 2003 cin>>"Bitte Auswaehlen: ">>ausw; in cin>>ausw; änderen Still ist allerdings einwenig unübersichtlich. goto anweisungen sind zwar erlaubt, aber solltest du von anfang an VERMEIDEN Zitieren
TripleD Geschrieben 13. August 2003 Autor Geschrieben 13. August 2003 Hallo Idefix, danke für die schnelle Antwort. Habs gleich mal so umgeändert, wie du es gesagt hast. Und TATA es klappt. Wenn das mit goto nichts ist, wie mach ich das dann? Mit Schleifen???? Gibt es eigentlich auch eine möglichkeit, das Dosfenster länger offen zu lassen? Sobald ich was ausgeführt hab schließt es sich, und ich kann das Ergebnis nicht lesen. Puma00 Zitieren
Doham Geschrieben 13. August 2003 Geschrieben 13. August 2003 Original geschrieben von Puma00 Hallo, (...) int ausw; (...) Menue: cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl; cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl; cout<<"m/M = Multiplizieren oder d/D = Dividieren ein.\n"<<endl; cin>>"Bitte Auswaehlen: ">> ausw ; Ich glaub Du solltest Dir den Datentyp der Variable ausw mal angucken. :floet: sonst könnte das Programm nicht ganz funktionieren... Gibt es eigentlich auch eine möglichkeit, das Dosfenster länger offen zu lassen? Sobald ich was ausgeführt hab schließt es sich, und ich kann das Ergebnis nicht lesen Mach halt z.B. noch ein cin mit der Frage "Wollen Sie beenden J/N" und wenn man nicht beenden will, gehts halt nochmal zum Beginn. Das Programm könnte man in eine DoWhile-Schleife packen, und die Endebedingung von dem J/N-cin abhängig machen. Zitieren
TripleD Geschrieben 13. August 2003 Autor Geschrieben 13. August 2003 Hi Doham, das hab ich auch schon gesehen und behoben, trotzdem Danke. Ich komm trotzdem nicht weiter. Egal was ich da eingeb (Buchstabe für Berechnungsform), er rechnet immer nur Addition. Hiiiiiiiiiiiiiiiiiiiilfe. Puma00 :confused: :confused: :confused: :confused: Zitieren
Klotzkopp Geschrieben 13. August 2003 Geschrieben 13. August 2003 Original geschrieben von Puma00 #include <iostream.h>Das ist veraltet. Verwende #include <iostream> Wenn du nicht vor jedes cin und cout std:: schreiben willst, auch noch using namespace std; #include <stdlib.h> #include <math.h>Die beiden brauchst du gar nicht. void main(void)Das muss int main() heißen. char ('a' || 'A'); //Addieren char ('s' || 'S'); //Subtrahieren char ('m' || 'M'); //Multiplizieren char ('d' || 'D'); //Dividieren char ('b' || 'B'); //BeendenDiese Zeilen bewirken nichts, die kannst du also auch weglassen. else if(ausw=='s'||'S') else if (ausw=='m'||'M') else if (ausw=='d'||'D') else if (ausw=='b'||'B')Das ist nicht das, was du willst. Hier wird das Ergebnis des Vergleichs (ausw == Zeichen) mit einem anderen Zeichen logisch oder-verknüpft. Das Ergebnis ist, weil das Zeichen nicht das Nullzeichen ist, immer wahr. Was du meinst, ist: else if (ausw=='m' || ausw=='M') usw. Zitieren
idefix Geschrieben 13. August 2003 Geschrieben 13. August 2003 if(ausw=='s'||'S') ? wenn ausw=='s' oder 'S' das wird im wahr sein weil 'S' immer ungleich 0 ist besser if( (ausw=='s') || (ausw=='S')) du kannst ja mal deine if else abfrage in switch(ausw) { case 's': case 'S': //Quelltext break; case 'b':case 'B': return 0; } goto menue; änderen danach sollten wir goto wegnehmen Zitieren
TripleD Geschrieben 13. August 2003 Autor Geschrieben 13. August 2003 Hallo, danke! Jetzt läuft das Ding, so wie ich das wollte. Hab noch eine Frage: Wie mach ich das mit der Abfrage, ob ich nochmal das gleiche berechnen möchte oder eine andere Rechenart auswählen will? Puma00 Zitieren
TripleD Geschrieben 13. August 2003 Autor Geschrieben 13. August 2003 Also Idefix (und alle anderen die das auch nicht verstehen:D ), nach dem ich eine Berechnung gemacht habe (z.B. Addition), würd ich gern eine Abfrage rein machen, ob der User nochmal eine Addition starten möchte, eine andere Rechenform (Subtraktion,Multiplikation,.....) oder ob er das Programm beenden möchte. Ist das so jetzt verständlicher? Puma00 Zitieren
idefix Geschrieben 13. August 2003 Geschrieben 13. August 2003 Dafür hast du doch goto Menue eingebaut? wie wärs mit n für noch mal die Variablen int zahl1; int zahl2; haben doch dann noch die Werte. Muß dir nur noch merken welches das letzte Menue war. g für (keine Ahnung) setzt eine Variable die das einlesen der zahlen unterbindet und wieder goto menue; Wird wahrscheinlich richtig unübersichtlich. Zitieren
idefix Geschrieben 14. August 2003 Geschrieben 14. August 2003 Lösungsvorschlag: wie gesagt goto stört irgendwie //////////////////////////////////////////// void ZahlenEingeben(int& z1,int& z2) { cout<<"Bitte erste Zahl eingeben: "; cin>>z1; cout<<"Bitte zweite Zahl eingeben: "; cin>>z2; } //////////////////////////////////////////// char BerechnungsArt(char c) { switch(c) { case 's': case 'S': return '-'; case 'a': case 'A': return '+'; default: return c; } } //////////////////////////////////////////// int Berechnen(char s,int z1,int z2) { switch(s) { case '-': return z1-z2; case '+': return z1+z2; } return 0; } //////////////////////////////////////////// int main(int argc, char* argv[]) { int zahl1; int zahl2; int ergebnis; char ausw; char art; bool bEingabe=true; bool bBerechnen=false; cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl; Menue: cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl; cout<<"m/M = Multiplizieren oder d/D = Dividieren ein"<<endl; cout<<"n/N = noch mal"<<endl; cout<<"b/B = beenden"<<endl; cin>>ausw; art=BerechnungsArt(ausw); switch(art) { case '-': case '+': if(bEingabe) { ZahlenEingeben(zahl1,zahl2); } ergebnis=Berechnen(art,zahl1,zahl2); bEingabe=true; cout<<"Das Ergebnis lautet: "<<zahl1<<art<<zahl2<<"="<<ergebnis<<endl<<endl; break; case 'n': bEingabe=false; break; case 'b': return 0; } goto Menue; } <EDIT: Bitte Code-Tags benutzen | Klotzkopp> Zitieren
Timon Geschrieben 14. August 2003 Geschrieben 14. August 2003 Menue: ... goto Menue; laesst sich durch: while (1) { ... } ersetzen P.S.: C++ Code ist das eher weniger; eher C; ist aber sowieso viel schoener Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.