Wechselgeld Automat

Status
Nicht offen für weitere Antworten.
Kann mir irgendwer sagen wie man an so einer Aufgabe herangeht und wie man Schritt für Schritt zur Lösung kommt?

Wechselgeld Automat
Ein Automat soll einen beliebigen Geldbetrag zwischen 0 € und 5,50 € in Euro-Münzenwerten von 2 €, 1 €, 50 ct, 20 ct, 10 ct, 5 ct, 2 ct, und 1 ct rausgeben können. Erstellen Sie ein JAVA-Programm, weclhes zu einem eingegebenen Geldbetrag die nötigen Euro-Münzwerte ausgibt. Der Geldbetrag wird in Cent eingegeben und es soll geprüft werden, ob es sich um einen gültigen Betrag von maximal 550 Cent handelt. Folgende Konsolenausgabe zeigt die Funktionalität des zu erstellenden Programms für eine beispielhafte Eingabe von 396 Cent:

Geldbetrag in ct (maximal 550 cent): 396
Wechselgeld: 2 €, 1 €, 50 ct, 20 ct, 20 ct, 5 ct, 1 ct,

Das ist eine ehemaliger Leistungsnachweis. Wäre nett, wenn jemand eine Lösung hätte. Danke.
 

Marco13

Top Contributor
Stell dir mal vor, du solltest mir 396 cent mit möglichst wenigen Münzen geben. Beschreib' mal genau, wie du das machen würdest.
Versuche dann, "Muster" in dem zu erkennen, was du machst - ob du z.B. immer "das gleiche" machst, nur mit irgendwelchen anderen Zahlen.
Beschreibe die Vorgehensweise dann möglichst allgemein (und trotzdem präzise)
 
Ich komm nicht weiter.

Hier mein Ansatz:
Java:
System.out.println("Bitte geben Sie den Geldbetrag ein!");
System.out.println("Geldbetrag in ct (maximal 550ct): ");
double Geldbetrag = StdInput.readDouble();
double zwei = 2, eins = 1, fünfzig = 50, zwanzig = 20, zehn = 10, fünf = 5, zweic = 2, eins = 1;

Ich vermute, dass das irgendwas mit Modulo (%) zu tun hat. Aber wir haben soetwas noch nicht näher behandelt.
 

Marco13

Top Contributor
OK, SO basic. Die Zahlen sollten "int"s sein - man rechnet nicht umsonst mit cent, das macht's einfacher. Man braucht modulo übrigens nicht unbedingt... aber wenn ich jetzt sagen würde, was man schreiben muss, oum den Effekt von modulo zu erreichen, wäre das schon der Halbe Code... ;) Und eine (meintewegen in Worten beschriebene) Idee zur Vorgehensweise allgemein hast du noch nicht gepostet.
 

Sonecc

Gesperrter Benutzer
1. eins ist doppelt bei deinem "lösungsansatz" der keiner ist
2. ein euro sind nicht 1, sondern 100 cent
3. vernünftige namen verwenden
4. vorgehensweise überlegen (bsp. wäre den höchsten centbetrag (also 200 für 2€) von dem eingegebenen abzuziehen und dann zu prüfen ob das zuviel war oder nicht) gibt aber auch andere wege wie den grade beschriebenen... und so wie ich ihn beschrieben habe ist er nicht vollständig
 

ARadauer

Top Contributor
Wäre nett, wenn jemand eine Lösung hätte. Danke.

Willst du die Lösung oder soll ich dir helfen?

Ich geb dir mal den Ansatz: Mach dir ein Array mit den Werten, von groß nach klein.

Geh in einer Schleife ober die Werte und schau wie oft der akutelle Wert in deinem Betrag enthalten ist.
Das ist dann die Anzahl der Scheine/Münzen, den Rest weißt du dann deinem Betrag zu und nächster Wert...

Das ist genau das was du im realen Leben auch machen würdest... 127.. mhn 500 ne brauch ich nicht, 200 nein, 100 .. 1 mal.. ok rest 27, 50 nein.. 20 .. 1 mal, rest 7 usw....

Hier hab ich vor Kurzem die Lösung gepostet: Kleine Warnung bevor du dir den Code holst... das ist ein sehr simples Anfängerbeispiel, ich würd wirklich versuchen, das selber zu lösen... es wird nicht einfacher!!!!

http://www.java-forum.org/java-basics-anfaenger-themen/90574-geldstueckelung.html
 
Schleifen, Methoden und Felder kommen erst in den nächsten Nachweisen drann.
Die Aufgabe soll man mit den Grundlagen sowie mit if/else lösen.
Ich probier das jetzt nochmal und schau mir das ganze nochmal an und stell heute Abend mal was rein. Vielleicht komm ich ja zur Lösung.
 

Sonecc

Gesperrter Benutzer
ohne schleifen dürfte das eine relativ anstrengende Tipparbeit werden:autsch:
 

ARadauer

Top Contributor
aja soviel schreibarbeit ist das auch wieder nicht... copy und paste wahrscheinlich... das ist so eine typische übung, damit dem studenten auffällt, dass da extrem viel code verdopplung drinnen ist... dann frag er sich mhn.. da müsst es doch was geben und dann lernt man von den gloreichen Schleifen und Arrays und ist voll happy :)

Java:
   public static void main(String[] args) throws IOException {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

      int betrag =-1;


      while(betrag<0 || betrag>550){
         System.out.println("Betrag in cent eingeben, zwischen 0 und 550:  ");     
         String line = in.readLine();
         try {
            betrag = Integer.parseInt(line); 
         } catch (Exception e) {
           System.out.println("Eine Zahl! Gruzefix Zakarament!!");
         }

      }

      if(betrag>=200){
         int anzahl =(int) (betrag/200);
         betrag = betrag -anzahl*200;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+200+" Rest: "+betrag);
      } 
      if(betrag>=100){
         int anzahl =(int) (betrag/100);
         betrag = betrag -anzahl*100;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+100+" Rest: "+betrag);
      } 
      if(betrag>=50){
         int anzahl =(int) (betrag/50);
         betrag = betrag -anzahl*50;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+50+" Rest: "+betrag);
      } 
      if(betrag>=20){
         int anzahl =(int) (betrag/20);
         betrag = betrag -anzahl*20;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+20+" Rest: "+betrag);
      } 
      if(betrag>=10){
         int anzahl =(int) (betrag/10);
         betrag = betrag -anzahl*10;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+10+" Rest: "+betrag);
      } 
      if(betrag>=5){
         int anzahl =(int) (betrag/5);
         betrag = betrag -anzahl*5;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+5+" Rest: "+betrag);
      } 
      if(betrag>=2){
         int anzahl =(int) (betrag/2);
         betrag = betrag -anzahl*2;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+2+" Rest: "+betrag);
      } 
      if(betrag>=1){
         int anzahl =(int) (betrag/1);
         betrag = betrag -anzahl*1;  
         if(anzahl>0)
            System.out.println(anzahl +" X "+1+" Rest: "+betrag);
      }

      System.out.println("fertig...");

   }
 
V

Vayu

Gast
hättest ruhig n spoiler um den code setzen können ^^ jetzt sieht er ja sofort die Lösung
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben