c++ Taschenrechner
-
@SeppJ ich habe keinen lehrer ich habe ein Buch von Thomas Theis und das goto habe ich in verschiedenen foren gesehen
-
@unkn0wn hör auf @SeppJ .Gewöhn dir den Mist mit goto garnicht erst an. Du wirst es in fast keinem C++ von anderen sehen und wirst selbst Probleme haben größere Projekte damit zu schreiben, weil es sehr unübersichtlich wird. Goto ist zwar ein Bestandteil der Sprache, aber nicht alles was inbegriffen ist, ist auch gut. Das wirst du noch öfter merken. Es genügt wenn du mal gesehen hast was es macht, aber nutzen solltest du es nicht.
-
-
@manni66 sagte in c++ Taschenrechner:
Thomas Theis: Einstieg in alles
Dies ist einer der besten Indikatoren, dass ein Buch nichts taugt. Wenn ein Autor Lehrbücher zu 10 verschiedenen Themen hat, dann heißt das, er ist in keinem davon Experte, sondern Experte im Lehrbücherschreiben. Man hat also 10 Lehrbücher, die richtig gut geschrieben sind, von einem Autor, der nicht weiß, wovon er spricht.
-
wie soll ich dann das programm ohne goto machen? bin halt mit schleifen noch net so gut
-
Dann lerne, wie man diese anwendet: C++-Programmierung/ Einführung in C++/ Schleifen
-
@unkn0wn sagte in c++ Taschenrechner:
wie soll ich dann das programm ohne goto machen? bin halt mit schleifen noch net so gut
Bei den
goto
ist meist auch eine Bedingung dabei.
Deine hast du schlecht in demswitch
versteckt.Springst du nach oben, nimmst du eine do-while-Schleife.
Springst du nach unten, eine while-Schleife.
-
Ich habe jz mal den rechner komplett neugeschrieben
Freue mich auf verbesserungsvorschläge
#include <iostream> using namespace std; double zahl1, zahl2, ergebnis; char quit, rechenzeichen; char user_input; int main() { ergebnis = 0; system("Color A"); do { cout << "Letzte Rechnung: " << zahl1 << " " << rechenzeichen << " " << zahl2 << " " << " = " << ergebnis << endl; cout << "Rechnung: "; cin >> zahl1 >> rechenzeichen >> zahl2; switch (rechenzeichen) { case '+': ergebnis = zahl1 + zahl2; break; case '-': ergebnis = zahl1 - zahl2; break; case '*': ergebnis = zahl1 * zahl2; break; case '/': ergebnis = zahl1 / zahl2; break; default: cout << "Junge gib ein richtiges Rechenzeichen an!" << endl; } cout << zahl1 << " " << rechenzeichen << " " << zahl2 << " = " << ergebnis << endl; cout << "Geben sie irgendeine Taste ein um weiterzurechnen und: 'Q' zum beenden!" << endl; cin >> user_input; system("CLS"); if (user_input == 'q' || user_input == 'Q') { break; } } while (1); return 0; }
-
ich hab das char quit mittlerweile auch entfernt xD
-
Keine globalen Variablen!
Warum eine Endlosschleife?
Die Bedingung für den Abbruch hast du doch (fast) in dem
if
Die
case
-Zeilen solltest du noch etwas einrücken (dasdefault
auch)
-
@unkn0wn Was bekommst Du denn für eine Ausgabe gleich nachdem Du das Programm startest und warum?
-
Versuch es doch in eine Funktion zu packen ein anstelle des break und das dann Ich eine schleife zu packen dann wäre dein Rechner nur eine Funktion
-
@Swordfish Ne die ausgabe ist standard 0 weil noch nichts gerechnet wurde aber wenn du was gerechnet hast und ne neue rechnung machst wird da halt noch die letzte rechnung angezeigt
-
@Abe meinst du nur das switch ?
-
Ich meine die ganze do schleife dann Kannste das wiederum in der Main in eine schleife packen wo du es in einen switch block packst
int main () { while (1) { cout << "hier stehen die Auswahl Möglichkeiten/n"; Int auswahl; cin>>Auswahl; switch(auswahl) case 1: rechner();break; ....... case irgendwas: return 0; } }
-
@unkn0wn sagte in c++ Taschenrechner:
Ne die ausgabe ist standard 0 weil noch nichts gerechnet wurde
Das kommt halt durch das
system("CLS")
Sowas machen alle Anfänger.
Das hat aber mit der Funktion des Programms nichts zu tun - ist nervig - und überflüssig.
-
@DirkB Ich habe das gemacht damit man seine rechnungen davor sieht ist mir eigtl egal wenn da nur 0 steht. Und ich bin halt noch Anfänger
-
@unkn0wn sagte in c++ Taschenrechner:
@DirkB Ich habe das gemacht damit man seine rechnungen davor sieht ist mir eigtl egal wenn da nur 0 steht. Und ich bin halt noch Anfänger
Dann lass das system("cls"); doch einfach weg.