Autor |
Beitrag |
schepppern
Hält's aus hier
Beiträge: 5
|
Verfasst: Mi 03.11.10 15:58
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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: 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; |
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
|
|
schepppern 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 19321
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 04.11.10 10:57
hat super geklappt, aber was genau bewirkt das zeichen "%" ?
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: Do 04.11.10 11:08
Zitat: | Ein weitaus einfacherer Ansatz wäre eine Moduloberechnung( Divisionsrest ) |
'%' gibt dir den Restbetrag einer Division.
|
|
schepppern 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: 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
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
|
|
|