Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Pille998

Frischling

  • »Pille998« ist der Autor dieses Themas

Beiträge: 9

Beruf: Schüler

  • Private Nachricht senden

1

10.03.2012, 21:01

Problem mit Taschenrechner

Hallo Leute!

Ich habe gerade versucht einen Taschenrechner zu programmieren.

Alles ist gut, nur wenn er das ergebnis anzeigen soll, schließt sich dass programm sofort..
kann mir irgendwer sagen wie ich das problem lösen kann?
Hier der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Taschenrechner. Addition ,Subtraktion und Multiplikation mit Kommazahlen 
//Version 1.7 
// 
#include <iostream> 
using namespace std;int main () 
{char auswahl; 
float Zahl1, Zahl2;float Summe = 0; 
float Differenz = 0;float Produkt = 0; 
float Quotient = 0;cout << "Taschenrechner\n"; 
cout << "Menue:\n";cout << "(A)ddieren\n(S)ubtrahieren\n(M)ultiplizieren\n(D)ividieren\n";cout << "Bitte Rechenart Eingeben: "; 
cin >> auswahl;if ((auswahl == 'a') || (auswahl == 'A')) 
{cout << "Bitte den ersten Summanden eingeben und ENTER druecken: "; 
cin >> Zahl1;cout << "Bitte den zweiten Summanden eingeben und ENTER druecken: "; 
cin >> Zahl2; 
Summe = Zahl1 + Zahl2;cout << "Die Summe betraegt: " << Summe << endl; 
}else if ((auswahl == 's') || (auswahl == 'S')) 
{cout << "Bitte den Subtrahend eingeben und ENTER druecken: "; 
cin >> Zahl1;cout << "Bitte den Minuent eingeben und ENTER druecken: "; 
cin >> Zahl2; 
Differenz = Zahl1 - Zahl2;cout << "Die Differenz betraegt: " << Differenz << endl; 
}else if ((auswahl == 'm') || (auswahl == 'M')) 
{cout << "Bitte den ersten Faktor eingeben und ENTER druecken: "; 
cin >> Zahl1;cout << "Bitte den zweiten Faktor eingeben und ENTER druecken: "; 
cin >> Zahl2; 
Produkt = Zahl1 * Zahl2;cout << "Das Produkt betraegt: " << Produkt << endl; 
}else if ((auswahl == 'd') || (auswahl == 'D')) 
{cout << "Bitte den Dividend eingeben und ENTER druecken: "; 
cin >> Zahl1;cout << "Bitte den Divisor eingeben und ENTER druecken: "; 
cin >> Zahl2; 
Quotient = Zahl1 / Zahl2;cout << "Der Quotient betraegt: " << Quotient << endl; 
} 
elsecout << "Error!\n"; 
return 0; 
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Pille998« (10.03.2012, 21:13)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

10.03.2012, 21:08

Willkommen im Forum.
Wenn du dem Thread einen richtigen Namen gibst, eine Frage stellst und den Code richtig formatierst(benutz den Quellcodetab beim Posten/Bearbeiten ;) ) wird dir sicher jemand helfen :thumbsup:

Alternativ kannst auch die Suchfunktion benutzen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

10.03.2012, 23:17

Wow ein Bug beim Formatieren. Mach mal die "//" in der 3. Zeile raus.
Ich war mal so frei und hab alles für dich formatiert: (Das Version-Gedöns etc. am Anfang darf weg)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream> 
using namespace std;

int main () 
{
char auswahl; 
float Zahl1, Zahl2;
float Summe = 0.f; //Bei float immer '.f' dahinter, sonst wird double zugewiesen ;)//
float Differenz = 0.f;
float Produkt = 0.f; 
float Quotient = 0.f;
cout << "Taschenrechner\n"; 
cout << "Menue:\n";
cout << "(A)ddieren\n(S)ubtrahieren\n(M)ultiplizieren\n(D)ividieren\n";
cout << "Bitte Rechenart Eingeben: "; 
cin >> auswahl;
if ((auswahl == 'a') || (auswahl == 'A')) 
{
    cout << "Bitte den ersten Summanden eingeben und ENTER druecken: "; 
    cin >> Zahl1;
    cout << "Bitte den zweiten Summanden eingeben und ENTER druecken: "; 
    cin >> Zahl2; 
    Summe = Zahl1 + Zahl2;
    cout << "Die Summe betraegt: " << Summe << endl; 
}
else if ((auswahl == 's') || (auswahl == 'S')) 
{
    cout << "Bitte den Subtrahend eingeben und ENTER druecken: "; 
    cin >> Zahl1;
    cout << "Bitte den Minuent eingeben und ENTER druecken: "; 
    cin >> Zahl2; 
    Differenz = Zahl1 - Zahl2;
    cout << "Die Differenz betraegt: " << Differenz << endl; 
}
else if ((auswahl == 'm') || (auswahl == 'M')) 
{
    cout << "Bitte den ersten Faktor eingeben und ENTER druecken: "; 
    cin >> Zahl1;
    cout << "Bitte den zweiten Faktor eingeben und ENTER druecken: "; 
    cin >> Zahl2; 
    Produkt = Zahl1 * Zahl2;
    cout << "Das Produkt betraegt: " << Produkt << endl; 
}
else if ((auswahl == 'd') || (auswahl == 'D')) 
{
    cout << "Bitte den Dividend eingeben und ENTER druecken: "; 
    cin >> Zahl1;
    cout << "Bitte den Divisor eingeben und ENTER druecken: "; 
    cin >> Zahl2; 
    Quotient = Zahl1 / Zahl2;
    cout << "Der Quotient betraegt: " << Quotient << endl; 
} 
else
    cout << "Error!\n";
return 0; 
}

An sich ist der Code relativ korrekt, jedoch kann man ihn etwas optimieren, wenn man, salopp gesagt, nur mit if&else arbeitet, du wirst noch switch&case kennenlernen, wodurch man noch mehr machen könnte.
Überlege vielleicht mal selbst. Was passiert sonst nachdem es ausgegeben wird?
Eigentlich ein guter Einstieg für den Debugger, finde ich. Google hilft sicher zusätzlich. (Stichwörter: "Haltepunkt setzen") ;)
Naja, nochmal als Denkanstoß: Du gibst das Ergebnis schon aus, doch was geschieht denn danach? ;')
Noch was, auch wenn es Klugscheiße ist:
Minuend-Subtrahend=Differenz
Dividend/Divisor=Quotient

MfG
Check

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

11.03.2012, 10:34

Das Programm beendet sich, weil es zuende ist(ja, echt!).
Du kannst es mit diesen zwei Zeilen dazu bringen auf eine Tasteneingabe zu warten:

C-/C++-Quelltext

1
2
std::cin.ignore();
std::cin.get();


Anstelle von Summe, Differenz, Produkt und Quotient könntest du acuh einfach eine Variable nehmen, die Ergebnis heißt.
Besser wäre es aber wenn du:

C-/C++-Quelltext

1
float Summe = Zahl1 + Zahl2;

schreiben würdest. Variablen sollten so spät wie möglich definiert werden.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

11.03.2012, 13:16

Überfordert doch mal direkt nen Anfänger;) Man könnte ihm auch schreiben, dass es schöner mit Gui ging und dass man dafür auch einen Formelparser schreiben könnte, der beliebig lange Formeln scannen kann, aber ich denke er lernt noch und da ist das doch ok wie ers macht;) Wie schon gesagt, schließt das Fenster einfach direkt wenn dein Programm zu ende ist. Wenn du dein Programm aus der Konsole raus startest zum Beispiel, würde das nicht passieren. Eine andere Möglichkeit wäre dann wie NachoMan schon sagt, am Ende einfach eine Tastenabfrage einzubauen. Dadurch wird dein Programm dann auch aufgehalten. Gibt da noch mehr Möglichkeiten. Zur Not einfach die Forum-Suche benutzen wenn du mehr dazu wissen willst.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

6

11.03.2012, 13:25

Zu Testzwecken kannst du dein Programm auch einfach mit [STRG+F5] aus VIsual Studio(falls genutzt) starten dann bleibt die Konsole auch offen bis du Enter drückst.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

11.03.2012, 14:14


[...]
schreiben würdest. Variablen sollten so spät wie möglich definiert werden.

Vllt. lernt er mit einem C Buch, da sollte/musste man afaik ja alle Variablen gleich am Anfang direkt anlegen.
So wird es auch in vielen Online Tutorials gezeigt und leider auch bei uns im C++ Praktikum.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

11.03.2012, 14:22

Vllt. lernt er mit einem C Buch

Dann hätte er den Thread nicht im "Buch: C++ für Spieleprogrammierer" erstellt :thumbsup:
Ausserdem nutzt er cout und cin. Die gibts nicht in C.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (11.03.2012, 14:35)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

11.03.2012, 14:34


Dann hätte er den Thread nicht im "Buch: C++ für Spieleprogrammierer" erstellt :thumbsup:

Würde ich nicht unbedingt behaupten. ;)
Zudem kann er ja speziell zu dem Thema ein Tutorial/C Buch benutzt haben oder Vorkenntnisse aus C besitzen. :)

Ausserdem nutzt cout und cin. Die gibts nicht in C++.

Fehlt da ein "er"? Wenn ja: die gibt es ausschließlich in C++ dachte ich. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

11.03.2012, 14:36

Ach du heilige Spaghetti, was war denn das? xD

Hast ja recht, aber was ist so schlimm daran wenn ich ihm den Tipp gebe?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige