Entwickler-Ecke
C# - Die Sprache - Bankautomat *VERZWEIFLUNG*
schepppern - Mi 03.11.10 15:58
Titel: Bankautomat *VERZWEIFLUNG*
Hallo,
ich habe folgende aufgabe und dazu auch schon ein quellcode, da ich aber ein absoluter anfänger bin, brauch ich nun eure hilfe.
Ich weiss einfach nicht den lösungsweg, vll brauch ich nur ein tipp. ich hoffe ihr könnt mir helfen...hier die aufgabe und der quellcode:
Bankatomaten „denken“ bei der Geldausgabe mit. Sie geben z. B. 190€ in Form von drei 50€
Scheinen und zwei 20€ Scheinen aus. Und nicht in neunzehn 10€ Scheinen. So ein
Bankautomat soll als Programm simuliert werden.
Erstellen Sie ein Programm, was folgendes leistet. Eingegebene Geldbeträge sollen in
ausgezahlt werden in Form von 50, 20, 10 und 5 Geldscheinen sowie 2 und 1€ Münzen.
Beispiel: Bei der Eingabe von 191 soll folgende Ausgabe erstellt werde:
50 Geldschein: 3
20 Geldschein : 2
10 Geldschein: 0
5 Geldschein: 0
2 Münze: 0
1 Münze: 1
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:
| int geld,test,test2,test3,test4,test5,geld50,geld20,geld10,geld5,geld2,geld1;
Console.WriteLine("Betrag eingeben(keine komma stellen): "); geld = Convert.ToInt32(Console.ReadLine());
geld50 = geld / 50; test = geld - (geld50 * 50); Console.WriteLine("Anzhal 50 Euro Scheine: " + geld50); geld20 = test / 20; test2 = test - (geld20 * 20); Console.WriteLine("Anzhal 20 Euro Scheine: " + geld20); geld10 = geld20 / 10; test3 = test2 - (geld10 * 10); Console.WriteLine("Anzhal 10 Euro Scheine: " + geld10); geld5 = geld10 / 5; test4 = test3 - (geld5 * 5); Console.WriteLine("Anzhal 5 Euro münzen: " + geld5); geld2 = geld5 / 2; test5 = test4 - (geld2 * 2); Console.WriteLine("Anzhal 2 Euro münzen: " + geld2); geld1 = geld2 / 1; Console.WriteLine("Anzhal 1 Euro münze: " + geld1);
Console.ReadLine(); |
Th69 - Mi 03.11.10 16:36
Auch wenn du eher "Copy&Paste"-Code verwendest, anstatt mit Schleifen zu arbeiten (aber vllt. hast du die noch nicht duchgenommen?), so hast du trotzdem (oder gerade deswegen!?) Fehler drin.
Bei den ersten beiden Geldberechnungen (geld50, geld20) ist es noch richtig, aber bei den folgenden nicht mehr (achte mal genau auf die Variablen!).
Und das beste wäre, du würdest nur eine Variable 'restgeld' verwenden, anstatt die vielen 'test'-Variablen...
Für dich selber zum Verstehen ist es am besten, du verwendest mal den Debugger (Haltepunkte setzen und Zeile für Zeile durchgehen), dann siehst du welche Variablen einen falschen Inhalt haben.
P.S. "Anzhal" -> "Anzahl" sowie "münzen" -> "Münzen" ;-)
schepppern - Do 04.11.10 09:01
Hallo,
das Problem ist bei mir, das stimmt, dass die beiden ersten zahlen(50 u. 20) funktionieren aber weiter weiss ich nich weiter, hab mir den text schon stunden lang angeguckt aber ich hab keine idee. gibt es evt ein leichteren weg?
...und es stimmt, zählerschleifen hatte ich noch nicht ;)
traceurmicha - Do 04.11.10 09:13
Hallo scheppern,
Nur um dir auf die Sprünge zu helfen, ich glaube das was Th69 meinte (korrigiere mich wenn ich falsch liege) ist das:
Zitat: |
test = geld - (geld50 * 50);
.
.
.
geld20 = test / 20;
.
.
.
geld10 = geld20 / 10; |
schepppern - Do 04.11.10 09:59
wenn ich das so machen, wi ihr sagt, kommt bei mir was ganz andres raus
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| geld50 = geld / 50; test = geld - (geld50 * 50); Console.WriteLine("Anzhal 50 Euro Scheine: " + geld50); geld20 = test / 20; test2 = test - (geld20 * 20); Console.WriteLine("Anzhal 20 Euro Scheine: " + geld20); geld10 = test / 10; test3 = test2 - (geld10 * 10); Console.WriteLine("Anzhal 10 Euro Scheine: " + geld10); geld5 = test / 5; test4 = test3 - (geld5 * 5); Console.WriteLine("Anzhal 5 Euro münzen: " + geld5); geld2 = test / 2; test5 = test4 - (geld2 * 2); Console.WriteLine("Anzhal 2 Euro münzen: " + geld2); geld1 = test / 1; Console.WriteLine("Anzhal 1 Euro münze: " + geld1); |
jaenicke - Do 04.11.10 10:32
Wie gesagt, schau schrittweise was passiert. Wenn du es nicht am PC machen willst, machs auf einem Blatt Papier mit den Variablen...
Greenberet - Do 04.11.10 10:51
Ein weitaus einfacherer Ansatz wäre eine Moduloberechnung( Divisionsrest )
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| geld50 = geld / 50; geld = geld % 50;
geld20 = geld / 20; geld = geld % 20;
|
dadurch ersparst du dir unnötige Rechnerei und unnötige Variablen ;)
schepppern - Do 04.11.10 10:57
hat super geklappt, aber was genau bewirkt das zeichen "%" ?
Greenberet - Do 04.11.10 11:08
Zitat: |
Ein weitaus einfacherer Ansatz wäre eine Moduloberechnung( Divisionsrest ) |
'%' gibt dir den Restbetrag einer Division.
schepppern - Do 04.11.10 11:14
langsam kommt licht ins dunkle ;D ... vielen dank für eure hilfe, ihr habt bestimmt nicht das letzte mal von mir gehört^^
gruß
traceurmicha - Do 04.11.10 15:31
und damit du auch weißt was ich und Th69 meinten, hier dein Quelltext berichtigt.
am besten du schaust dir mal beide Varianten an (Deine erste und die berichtigte) damit du auch weißt wo dein Fehler lag!
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:
| int geld, test, test2, test3, test4, test5, geld50, geld20, geld10, geld5, geld2, geld1;
Console.WriteLine("Betrag eingeben(keine komma stellen): "); geld = Convert.ToInt32(Console.ReadLine());
geld50 = geld / 50; test = geld - (geld50 * 50); Console.WriteLine("Anzhal 50 Euro Scheine: " + geld50); geld20 = test / 20; test2 = test - (geld20 * 20); Console.WriteLine("Anzhal 20 Euro Scheine: " + geld20); geld10 = test2 / 10; test3 = test2 - (geld10 * 10); Console.WriteLine("Anzhal 10 Euro Scheine: " + geld10); geld5 = test3 / 5; test4 = test3 - (geld5 * 5); Console.WriteLine("Anzhal 5 Euro münzen: " + geld5); geld2 = test4 / 2; test5 = test4 - (geld2 * 2); Console.WriteLine("Anzhal 2 Euro münzen: " + geld2); geld1 = test5 / 1; Console.WriteLine("Anzhal 1 Euro münze: " + geld1);
Console.ReadLine(); |
Gruß Micha
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!