einfacher Taschnerechner
-
Hi!
habe grade vor 2 Monaten mit FI SI angefangen und wir haben auch viel AE in der Schule! Es macht mir Fun und die Demoszene hat mich inspiriert Programmieren zu lernen! Ich bin mittlerweile bei if, else und do, while angekommen wobei mir letzteres noch etwas unklar ist... An und für sich ist es auch kein taschenrechner eher ein mini Rechen Proggi!
Ich hab mal diesen Taschenrechner erstellt und würde gern mal von euch wissen ob das so OK ist oder ob ich zuviele Variablen vereinbart habe und ich eventuell mit einem Ergebniss auskomme?
#include <iostream> using namespace std; int main() { double operand1; double operand2; double ergebniss1; double ergebniss2; /*brauche ich für jedes Ergbebniss einen eigenen Speicherplatz? */ double ergebniss3; double ergebniss4; cout << "<-----Taschenrechner----->" << endl << endl; cout << "Gib eine Zahl ein: "; cin >> operand1; cout << endl << endl; cout << "Gib eine weitere Zahl: "; cin >> operand2; cout << endl << endl; ergebniss1 = operand1+operand2; cout << "Die Addition von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss1 << endl << endl; ergebniss2 = operand1-operand2; cout << "Die Subtraktion von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss2 << endl << endl; ergebniss3 = operand1*operand2; cout << "Die Multiplikation von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss3 << endl << endl; ergebniss4 = operand1/operand2; if (operand2 == 0) cout << "Die Division ist nicht möglich denn durch 0 ist nicht teilbar" << endl << endl; else cout << "Die Division von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss4 << endl << endl; system("Pause"); return 0; }
ich hab vorher noch nie was mit Programmieren gemacht war eher immer Hardware Enthusiast aber da wir es ja eh in der Schule machen und es irgendwie auch Spass macht wäre ich für Tipps dankbar wass man den verbessern könnte!
THX && Gr33tz
-
Tipps:
- Rücke deinen Code vernünftig ein! Du rückst zu oft ein, nämlich auch dann, wenn gar keine Verzweigung/Scheife stattfindet (nach cout). Das ist nicht notwedig und verwirrt den Leser (und dich selbst). Also einrücken nur bei if/switch/while/do...
Ein paar Möglichkeiten, dein Programm zu erweitern, wären z.B.:
- Weitere Operationen hinzufügen (Fakultät, Wurzel oder sonstwas).
- Statt alle Grundrechenarten durchzuspielen, könnte der User den Operator auswählen.
- Die Operandenanzahl könnte dynamisch sein (lass den User solange Operanden eingeben, wie er will).EDIT: Ach ja, da du deine Zwischenergebnisse direkt ausgibst und vor der nächsten Operation nicht weiter verarbeitest, brauchst du nicht für jedes eine eigene Variable. Du kannst ja auch einfach eine Variable ergebnis nehmen, dieser einen Wert zuweisen, den ausgeben und mit der nächsten Operation fortfahren.
-
Ich hab Deinen Quelltext mal - ungetestet - etwas geändert.
1. Brauchst Du das Ergebnis nur einmal, Du berechnest es, gibst es aus, und verwendest es in der Folge nicht mehr, aus diesem Grund kannst Du es bei jeder weiteren Berechnung überschreiben.
2. Muß die Prüfung, ob durch 0 dividiert wird, natürlich VOR dem Divisionsversuch stattfinden, ansonsten stürzt das Programm mit Division by Zero ab.MadOner schrieb:
und würde gern mal von euch wissen ob das so OK ist oder ob ich zuviele Variablen vereinbart habe und ich eventuell mit einem Ergebniss auskomme?
#include <iostream> using namespace std; int main() { double operand1; double operand2; double ergebniss; cout << "<-----Taschenrechner----->" << endl << endl; cout << "Gib eine Zahl ein: "; cin >> operand1; cout << endl << endl; cout << "Gib eine weitere Zahl: "; cin >> operand2; cout << endl << endl; ergebniss = operand1+operand2; cout << "Die Addition von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss << endl << endl; ergebniss = operand1-operand2; cout << "Die Subtraktion von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss << endl << endl; ergebniss = operand1*operand2; cout << "Die Multiplikation von " << operand1 << " und " << operand2 << " ergibt: " << ergebniss << endl << endl; //ergebniss = operand1/operand2; if (operand2 == 0) cout << "Die Division ist nicht möglich denn durch 0 ist nicht teilbar" << endl << endl; else cout << "Die Division von " << operand1 << " und " << operand2 << " ergibt: " << operand1/operand2 << endl << endl; system("Pause"); return 0; }
-
Danke für die schnelle hilfe! Dachte mir schon dass ich die 3 ergebnisse irgendwie einsparen kann war mir aber nicht sicher wie...Ich hab das mit dem Einrücken dann auch irgendwie falsch verstanden dachte es geht um codeblöcke die die einzelnen schritte besser trennen
Ein paar Möglichkeiten, dein Programm zu erweitern, wären z.B.:
- Weitere Operationen hinzufügen (Fakultät, Wurzel oder sonstwas).
- Statt alle Grundrechenarten durchzuspielen, könnte der User den Operator auswählen.
- Die Operandenanzahl könnte dynamisch sein (lass den User solange Operanden eingeben, wie er will).Punkt 1 komme ich noch mit und Punkt 2 könnte man auch mit if else realisieren, oder?
aber was ist mit Punkt 3 gemeintsry bin halt noch voll nubi
-
madOner schrieb:
Ich hab das mit dem Einrücken dann auch irgendwie falsch verstanden dachte es geht um codeblöcke die die einzelnen schritte besser trennen
Eine solche Trennung kannst du doch einfach mit Leerzeilen machen. Einrücken muss man eben nur bei Verzweigungen/Schleifen, da hier bedingter Code eingesetzt wird, der eben manchmal ausgeführt wird (und das eventuell mehrmals) und manchmal nicht.
madOner schrieb:
Punkt 1 komme ich noch mit und Punkt 2 könnte man auch mit if else realisieren, oder?
aber was ist mit Punkt 3 gemeintPunkt 2 könnte man mit if-else oder auch mit einer switch-Anweisung machen. Mit Punkt 3 war gemeint:
"Operator '+' gewählt. Geben Sie Operand 1 ein. Geben Sie Operand 2 ein. Geben Sie Operand 3 ein... usw. bis der User beschließt, dass er genug Operanden eingegeben hat. Der Ergebnisterm wäre dann z.B. 1+3+2+6. War ja nur 'ne kleine Anregung und führt vielleicht doch zu weit...
-
ahhh alles klar jetzt hab ich es kapiert! Big Thx nochmal!
switch hatten wir leider noch nicht, wie gesagt ich hänge ein bisjen bei do while... meistens klappt alles mit demm kompilieren und es werden keine fehler gemeldet aber beim debugen wird es auch ausgeführt aber manchmal geht es dann ab wie in der matrix^^
ihr habt mir sehr weiter geholfen und gute anregungen gegeben! vielen dank!
-
Also mit einer switch Anweisung würde ich das ganze schon machen oder erstmal mit if / else kette bis ihr switch behandelt, oder du dich in der lage fühlst es dir beizubringen.
Ein Taschenrechner ist auch sehr gut für den anfang. Du kannst ihn dann zu übungszwecken gleich um funktionen erweitern sobald du das behandelst.
Dann gehts weiter mit weiterführenden rechenoperationen wie fakultäten u.s.w.
Danach das ganze nochmal mir rekursion , schon toll was man damit machen kann