Wechselgeld Rechner in C?


07.10.2023, 16:08

Ausgeführt unter Linux und kompiliert mit gcc 13.2.1

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dein Fehler ist, dass Du für den rest immer den Modulo von cents machst, cents aber nur einmal gesetzt wird und nie ein Update erfährt.

cents ist 50

    eur2   = cents / 200;
    rest = cents % 200;

rest 50 = 50
cents = 50

    eur1   = rest / 100;
    rest = cents % 100;

rest = 50
cents = 50

    cent50 = rest / 50;
    rest = cents % 50;

cents50 = 1
rest = 50 % 50 = 1 also eigentlich alles gut?
cents = 50

    cent20 = rest / 20;
    rest = cents % 20;

cents = 50
cent20 = rest/20 = 0
rest = 50 % 20 = 10

    cent10 = rest / 10;
    rest = cents % 10;

cents = 50
cent10 = 10 / 10 = 1
rest = 50 % 10 = 0

Ich habe verschiedene Beträge ausprobiert und es kommt immer diese extra 10 Cent Münze raus.

Wenn du 1,50 € bezahlen musst, bekommst du 50 Cent zurück. Du gibst jedoch 60 Cent zurück - sprich eine 50 Cent und eine 10 Cent Münze.

Sorry, Kommando zurück. 😉 Ich habe deine Frage falsch verstanden resp. nicht gründlich genug gelesen (deinen Programmcode nicht berücksichtigt). Ich schließe mich soweit Destranix an. Die Berechnung ist falsch (Stichwort Modulo und Wert).

Woher ich das weiß:Berufserfahrung – UI/UX Designer, Full-Stack Developer
Von Experte medmonk bestätigt

Du solltest deine lokalen Variablen initialisieren.

Ansonsten liegt dein Fehler darin, dass du überall den Modulo vom Ursprungsbetrag und nicht vom Rest nimmst.

Außerdem solltest du die Beträge am Besten als Integers einlesen und behandeln (direkt als Cent-Beträge), das ersparrt dir Ungenauigkeiten.