Preis Berechnung if-Verweigungen



  • Warum hast du es denn nicht beim richtigen Code von @Peter-Viehweger belassen?
    Dein Code würde ja immer den Milchaufpreis 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 nicht 0.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.1

    ich 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, wurde Milch 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;


Anmelden zum Antworten