Hallo lieber M-Core User, ich habe am Samstag angefangen c++ zu lernen mit dem sicher wohl bekannten Buch C++ von A bis Z. Da ich nun heute die
do...while Schleife im Buch als neues Thema hatte, dachte ich mir, das ich mal einen kleinen Taschenrechner schreibe um die Schleife sozusagen zu üben. Es klappt alles soweit wunderbar, allerdings sagte ein Freund von mir, der schon länger C++ lernt, das der Code noch zu verbessern sei, ich wollte natürlich nicht wissen wie, sondern wo. Allerdings hat er mir natürlich auch dies nicht verraten, da ich allerdings gerne wissen würde wo, damit ich daran arbeiten kann bzw. herausfinden kann was dort zu verbessern ist, dachte ich ich Frage mal hier in meinem neuen Forum nach :)
Nun nach langer Rede hier noch endlich der Code hehe :
Code:// Rechner by Asura Cryin v1.0.2 #include <iostream> #include <cstdlib> using namespace std; int var, var1, var2; int main(void) { do { // Aufforderung zur Wahl der Rechenart cout << "\nBitte eine Rechenart waehlen : \n"; cout << "-1- Addition \n"; cout << "-2- Subtraktion \n"; cout << "-3- Multiplikation \n"; cout << "-4- Division \n"; cout << "-5- Ende \n"; if( !(cin >> var)) { cerr << "Fehler bei der Eingabe ! \n"; exit(1); } // Beginn der Rechnungen und so switch (var) { case 1 : cout << "Sie haben Addition gewaehlt \n"; cout << "Bitte Zahl eins eingeben : "; if( !(cin >> var1)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << "Bitte Zahl zwei eingeben : "; if( !(cin >> var2)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << var1 << " + " << var2 << " = " << (var1+var2); break; case 2 : cout << "Sie haben Subtraktion gewaehlt \n"; cout << "Bitte Zahl eins eingeben : "; if( !(cin >> var1)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << "Bitte Zahl zwei eingeben : "; if( !(cin >> var2)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << var1 << " - " << var2 << " = " << (var1-var2); break; case 3 : cout << "Sie haben Multiplikation gewaehlt \n"; cout << "Bitte Zahl eins eingeben : "; if( !(cin >> var1)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << "Bitte Zahl zwei eingeben : "; if( !(cin >> var2)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << var1 << " * " << var2 << " = " << (var1*var2); break; case 4 : cout << "Sie haben Division gewaehlt \n"; cout << "Bitte Zahl eins eingeben : "; if( !(cin >> var1)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << "Bitte Zahl zwei eingeben : "; if( !(cin >> var2)) { cerr << "Fehler bei der Eingabe! "; exit(1); } cout << var1 << " / " << var2 << " = " << (var1/var2); break; case 5 : cout << "Sie haben Ende gewaehlt \n"; cout << "Das Programm wird beendet "; break; default : cout << "Fehler bei der Eingabe"; break; } } while(var !=5); return 0; }
Ich würde einen anderen Datentypen wählen, da du ja sicherlich weißt, dass integer keine Kommazahlen anzeigen kann. Bsp: 5/6=0
Ich weis nicht direkt ob C++ es auch hat, doch du könntest dann
Double nehmen.
Oder long double...
Du willst zu den Pros gehören?
IRC: Channel: #101, Server: irc.euirc.net
das mit dem Datentyp ist mir bewusst, ich hatte auch eigentlich vor double zu nehmen, kA wieso daraus dann int geworden ist. o: . Ich bedanke mich schon mal für eure Posts, würde mich aber natürlich über weitere Verbesserungsvorschläge freuen (will ja direkt lernen alles anständig und bestmöglich zu lösen ).
MfG Asura
Hallo, ich meld mich mal wieder haha xP. Nun, ich hab mich dann heute Morgen dann noch einmal dran gesetzt und einen neuen Rechner gecodet(Übung macht ja bekanntlich den Meister ^^). Hab mir natürlich ein, zwei Erweiterungen einfallen lassen ^^ Allerdings macht er nun Zicken bei der Division o.o
Alles was ich eingebe kommt mit einem total falschen Ergebnis raus, auch die Wiedergabe der Variablen ist falsch. Aber ich weiß nicht wieso.
Hier einmal der abschnitt :könnte es daran liegen das long double nicht dafür geeignet ist?^^ (ich weiß auch das ich keinen Schutz vor 0 Divisionen habe und es dann ''crashd")Code:if (wahl1==1) { cout << "Sie möchten zwei Zahlen dividieren\n"; cout << "Bitte Zahl eins eingeben\n"; if( !(cin >> var)) { cerr << "Error! Fehler bei der Eingabe!\n"; break; } cout << "Bitte Zahl zwei eingeben\n"; if( !(cin >> var)) { cerr << "Error! Fehler bei der Eingabe!\n"; break; } cout << var << " / " << var1 << " = " << (var/var1); break;
wäre über Hilfe erfreut
Edit: also ich hab das mal getestet, wenn ich int als Datentyp nutze geht es, mit long double allerdings nicht.
Woran liegt das? Würde mich mal interessieren :O
wo hast du denn var1 definier? ich seh nur 2 mal
if( !(cin >> var))
Haha. Ja, du hast recht, manchmal sieht man den Wald vor lauter Bäumen nicht ^^
Geändert von Asura-Cryin (12.11.10 um 21:45 Uhr) Grund: Ausdruck/Rechtschreibung =<
du könntest mal den datentyp float benutzen.
Code:if( !(cin >> var) && var = 0)
Float ist ungenau double ist denke ich schon der richtige datentyp
Du konntest anstatt bei jeder Aufgabe die zahlen einlesen konntest du dies schon vor dem Switch Case machen somit sparst du Code
so würde das dann aussehen
Code:cout << "[1]Addition \n" << "[2]Subtraktion\n" << "[3]Multiplikation\n" << "[4]Division\n"; int select; if (!(cin >> select)) {cerr << "Fehler";cin.get();} double in1, in2; cout << "Zahl1 eingeben\n"; if (!(cin >> in1)) {cerr << "Fehler";cin.get(); } cout << "Zahl2 eingeben\n"; if (!(cin >> in2)) {cerr << "Fehler";cin.get(); } switch (select) { case 1 : cout << (in1+in2) << "\n"; break; case 2 : cout << (in1-in2) << "\n"; break; case 3 : cout << (in1*in2) << "\n"; break; case 4 : cout << (in1/in2) << "\n"; break; }
Zitat von Steve Jobs
Lesezeichen