Warum kommen bei meinem Programm immer komische Zahlen raus?
-
Ich bekomm immer mysteriöse Zahlen ausgegeben, warum?
#include <conio.h> #include <stdio.h> void main (void) { int betrag, one_cent, two_cent, ten_cent, twenty_cent, fifty_cent; gotoxy(15,3); printf("Geben sie einen Betrag unter 1 Euro in ct. an : "); scanf("%i",&betrag); if (betrag >= 50) { ++fifty_cent ; betrag = betrag - 50; } if (betrag >= 20) { ++twenty_cent ; betrag = betrag - 20; } if (betrag >= 10) { ++ ten_cent; betrag = betrag - 10; } if (betrag >= 2) { ++two_cent ; betrag = betrag - 2; } if (betrag > 0) { ++one_cent ; betrag = betrag -1; } gotoxy(20,5); printf("Du brauchst : %i 50ct. Stueck,",fifty_cent); gotoxy(34,6); printf("%i 20ct. Stuecke,",twenty_cent); gotoxy(34,7); printf("%i 10ct. Stuecke,",ten_cent); gotoxy(34,8); printf("%i 2ct. Stuecke,",two_cent); gotoxy(34,9); printf("%i 1ct. Stuecke.",one_cent); gotoxy(34,10); getch(); }
Danke, mfG,
Anfänger01
-
Ich bekomm immer mysteriöse Zahlen ausgegeben, warum?
Weil du vergessen hast die Variablen zu initialisieren:
int one_cent=0; // ...
Dann:
betrag = betrag - 50;
kannst du durch
betrag -= 50;
ersetzen.
Und dann überleg dir die Logik mal mit dem beispiel 40 Cent. (50: Nö, 20: Ja, 10: ja, 5: Ja, 2: Ja, 1:ja; 20+10+5+2+1 = 38 und 38!=40 !!!).
-
Ok, ich hab das ganze mit einer while Schleife gelösst.
Danke!#include <conio.h> #include <stdio.h> void main (void) { int betrag, one_cent, two_cent, ten_cent, twenty_cent, fifty_cent; one_cent = 0; two_cent = 0; ten_cent = 0; twenty_cent = 0; fifty_cent = 0; gotoxy(15,3); printf("Geben sie einen Betrag unter 1 Euro in ct. an : "); scanf("%i",&betrag); do { if (betrag >= 50) { ++ fifty_cent ; betrag -= betrag 50; } if (betrag >= 20) { ++ twenty_cent ; betrag -= 20; } if (betrag >= 10) { ++ ten_cent; betrag -= 10; } if (betrag >= 2) { ++ two_cent ; betrag -= 2; } if (betrag > 0) { ++ one_cent ; betrag -= 1; } } while (betrag > 0); gotoxy(20,5); printf("Du brauchst : %i 50ct. Stueck,",fifty_cent); gotoxy(34,6); printf("%i 20ct. Stuecke,",twenty_cent); gotoxy(34,7); printf("%i 10ct. Stuecke,",ten_cent); gotoxy(34,8); printf("%i 2ct. Stuecke,",two_cent); gotoxy(34,9); printf("%i 1ct. Stuecke.",one_cent); gotoxy(34,10); gotoxy(12,24); printf("Beliebige Taste druecken um zu Windows zurueckzukehren ..."); getch(); }
-
Die folgende Zeile ist noch etwas seltsam:
betrag -= betrag 50;
und Jetzt kommst du zwar auf 40 Cent, aber nicht 20+20, sondern 20+10+5+2+1+2. Vielleicht ist das ja aber auch korrekt so.
-
Meiner Ansicht nach gehören alle if durch while ersetzt. Nämlich immer so lange das größte Geldstück was noch paßt dazunehmen...
MfG Jester
-
Jester schrieb:
Meiner Ansicht nach gehören alle if durch while ersetzt. Nämlich immer so lange das größte Geldstück was noch paßt dazunehmen...
Meiner ansicht nach auch, bei 10, 5 und 1 muss es keine schleife sein. die äusere schleife kann man sich dann natürlich sparen.
ansonsten rechne das ganze mal mit 39 (20+10+5+2+1+1)
mfg