Preis Berechnung if-Verweigungen
-
Hallo, danke für die schnelle Antwort.
Nun ist es für Kaffee oder Milch definiert und für keins von beidem, aber wenn Kaffee und Milch gewünscht sind kommt immer noch der Preis von 1.1 raus.
Gruß
-
also wenn milch und zucker gewünscht sind, dann wird der preis in zeile 4 von 1,0 um 0,1 auf 1,1 erhöht und in zeile 9 von 1,1 um 0,1 auf 1,2. so soll das doch sein, oder nicht?
geh das mal ruhig mit dem debugger für die fälle "keine milch, kein zucker", "milch, kein zucker", "keine milch, zucker" und "milch, zucker" durch!
-
@Peter-Viehweger sagte in Preis Berechnung if-Verweigungen:
n
Jaa genau, das verstehe ich auch so weit, aber es sieht irgendwie danach aus dass er den Preis nicht speichert wenn man für Kaffee und Milch 'j' eingibt. Beim Debuggen stimmt alles soweit außer wenn ich für Kaffee und Milch 'j' eintippe.
-
double getraenkPreis = Grundpreis;
if (Zucker == 'j' && Milch == 'j') {
getraenkPreis += Milchaufpreis + Zuckeraufpreis;
}
else if (Zucker == 'n' || Milch == 'n') {
getraenkPreis += Milchaufpreis;
}std::cout << "Bitte " << getraenkPreis << "Euro eingeben und bestätigen";
double bezahlterBetrag;
std::cin >> bezahlterBetrag;hab auch schon so etwas ausprobiert aber das funktioniert auch nicht
-
Warum hast du es denn nicht beim richtigen Code von @Peter-Viehweger belassen?
Dein Code würde ja immer denMilchaufpreis
benutzen.Ansonsten zeige mal deine Ein- und Ausgabe in der Konsole (per C&P).
-
@Th69
Da es nicht funktioniert hat, habe ich weiter probiert, aber ich bin noch nicht auf die Lösung gekommen
-
Herzlich Willkommen beim Kaffee-Automaten!
Preis pro Tasse :
Kaffee oder Espresso:1€
Milch oder Zucker:0.2€Bitte wählen Sie aus
(k) Kaffee
(e) Espresso
(s) Service-Mode
Ihre Auswahl
k
Sie haben sich fr die Auswahl Kaffee entschieden
Möchten Sie Zucker (j/n)?j
Möchten Sie Milch (j/n)?j
Bitte 1.1Euro eingeben und bestätigen
das kommt aus der Konsole raus
-
Dann liegt es an etwas anderem in deinem Code.
Ändere den Code noch mal zurück und teste es erneut (d.h. gehe mit dem Debugger nach der Eingabe Zeile für Zeile durch deinen Code).Edit: Warum gibst du
Milch oder Zucker:0.2€
(d.h.Milch_Zucker
) aus? Sollte dort nicht0.1€
stehen?
-
@Th69 Jaa da hast du recht, danke für den Hinweis!
-
@Th69 Ich denke ich habe den Fehler gefunden, wenn ich den getraenkPreis nach Zeile 6 Ausgebe habe, werde ich schon beides gefragt ob es mit Milch und/oder Zucker sein soll, allerdings ist mein Code da ja noch nicht so weit, dass er den getraenkPreis speichert und nochmal 0.1 addiert
double getraenkPreis = Grundpreis;
Code:
if (Zucker == 'j') {
getraenkPreis += Zuckeraufpreis;
}
std::cout << getraenkPreis;Ausgabe:
Herzlich Willkommen beim Kaffee-Automaten!
Preis pro Tasse :
Kaffee oder Espresso:1€
Milch oder Zucker:0.1€Bitte wählen Sie aus
(k) Kaffee
(e) Espresso
(s) Service-Mode
Ihre Auswahl
k
Sie haben sich fr die Auswahl Kaffee entschieden
Möchten Sie Zucker (j/n)?j
Möchten Sie Milch (j/n)?j
1.1ich hoffe man versteht was ich sagen möchte
-
Und wo steht jetzt
if (Milch == 'j') { getraenkPreis += Milchaufpreis; }
?
-
@Th69
if (Zucker == 'j') {
getraenkPreis += Zuckeraufpreis;
}
std::cout << getraenkPreis;
if (Milch == 'j') {
getraenkPreis += Milchaufpreis;
}
std::cout << "Bitte " << getraenkPreis << "Euro eingeben und bestätigen";
double bezahlterBetrag;
std::cin >> bezahlterBetrag;so wäre der Abschnitt für mein Code
-
Und wenn du für Zucker und Milch jetzt jeweils
j
eingibst, wird nur "Bitte 1.1 Euro eingeben und bestätigen" (anstatt "1.2") ausgegeben?
Dann überprüfe mal, ob wirklich die Abfrage sowie die Zuweisung für Milch ausgeführt wird.Was mir außerdem noch aufgefallen ist: deine Eingabe könntest du codetechnisch verkürzen, indem du immer nacheinander nach Zucker und Milch fragst (anstatt zweimal verschachtelt).
Außerdem: Weißt du schon, was Funktionen (mit Parametern) sind? Dann könntest du z.B. die beiden Fälle für Kaffee und Espresso mit einer allgemeinen Funktion abdecken (anstatt wie bisher eine Codekopie zu haben).
-
@Th69 sagte in Preis Berechnung if-Verweigungen:
Und wenn du für Zucker und Milch jetzt jeweils
j
eingibst, wird nur "Bitte 1.1 Euro eingeben und bestätigen" (anstatt "1.2") ausgegeben?
Dann überprüfe mal, ob wirklich die Abfrage sowie die Zuweisung für Milch ausgeführt wird.Was mir außerdem noch aufgefallen ist: deine Eingabe könntest du codetechnisch verkürzen, indem du immer nacheinander nach Zucker und Milch fragst (anstatt zweimal verschachtelt).
Außerdem: Weißt du schon, was Funktionen (mit Parametern) sind? Dann könntest du z.B. die beiden Fälle für Kaffee und Espresso mit einer allgemeinen Funktion abdecken (anstatt wie bisher eine Codekopie zu haben).
Genau wenn ich jeweils ein j eingebe dann erscheint Bitte 1.1 Euro eingeben und bestätigen.
Dann überprüfe mal, ob wirklich die Abfrage sowie die Zuweisung für Milch ausgeführt wird. Wie mache ich das genau ?
und Funktionen kenne ich noch nicht.
-
Hab den Fehler gefunden. Danke für deine ganzen Antworten. Mein Fehler war das ich Milch auf n gesetzt habe davor schon. Siehe mein Ursprungscode in Zeile 58 bis 60 oder 73 bis 75.
-
Stimmt, wenn du bei Zucker
j
eingegeben hast, wurdeMilch
wieder auf'n'
gesetzt (daher auch mein Hinweis bzgl. Vereinfachung des Codes zur Eingabe).@xTheUhu sagte in Preis Berechnung if-Verweigungen:
@Th69 sagte:
Dann überprüfe mal, ob wirklich die Abfrage sowie die Zuweisung für Milch ausgeführt wird.
Wie mache ich das genau ?
und Funktionen kenne ich noch nicht.Am einfachsten mit dem Debugger deiner Entwicklungsumgebung (IDE), z.B. Visual Studio.
Haltepunkt in die Zeile setzen und dann zeilenweise den Code durchgehen ("Step to next line") - außerdem kannst du dir dann die Variablenwerte direkt anschauen (die Maus über die Variable im Code bewegen) bzw. im Debug-Fenster ("Watch").Funktionen solltest du bestmöglich als nächstes lernen, denn dadurch wird dein Code viel strukturierter (und kürzer). Außerdem sollte der Code für Ein-/Ausgabe sowie Logik getrennt voneinander sein (im ersten Schritt sind dafür Funktionen ausreichend, später wirst du bei C++ noch Strukturen und Klassen kennenlernen - auch für die Datenhaltung).
Mit welchem Buch oder Tutorial lernst du denn C++?
-
@xTheUhu sagte in Preis Berechnung if-Verweigungen:
Beim Debuggen stimmt alles soweit außer wenn ich für Kaffee und Milch 'j' eintippe.
da solltest du aber dringend nochmal den umgang mit dem debugger üben, das kommt normalerweise gleich nach cout << "Hello World!" << endl;