Hallo Jungs und Mädels, beim Lernen habe ich wieder nicht mehr weitergewusst.
Java:
package geldbetrag;publicclassGeldbetrag{int betrag,rest,anzahlhunderter,ergebnis;int anzahlZehnEuro,anzahlFuenfEuro,anzahlZweiEuro,anzahlEinEuro;publicvoidgeldBetragEinlesen(){
betrag =23;}publicvoidgeldBetragBerechnen(){
betrag= rest;
anzahlZehnEuro= betrag/10;
rest=rest %10;
anzahlFuenfEuro=betrag/5;
rest=rest %5;
anzahlZweiEuro=betrag%2;
rest=rest %2;
anzahlEinEuro = rest;}publicvoidgeldBetragAusgeben(){System.out.println("Der Betrag vom Betrag wird ausgezahlt in:");System.out.println("Zehn Euro Scheine "+ anzahlZehnEuro);System.out.println("Fuenf Euro Scheine "+ anzahlFuenfEuro);System.out.println("Zwei Euro Münzen "+ anzahlZweiEuro);System.out.println("Ein Euro Münzen"+ anzahlEinEuro);}}
Das ist der Code, das Ziel ist es z.B wenn 23 eingegeben wurde zu sagen . Man braucht 2 Zehn Euro Scheine und 1 Zwei Euro Münze und eine Ein Euro Münze. Was mache ich wieder falsch. Bitte in dem Schema des Programmes helfen, den sowas muss ich in der KA auch müssen.
Danke schonmal für Hilfen .
Hallo Jungs und Mädels, beim Lernen habe ich wieder nicht mehr weitergewusst.
Java:
package geldbetrag;publicclassGeldbetrag{int betrag,rest,anzahlhunderter,ergebnis;int anzahlZehnEuro,anzahlFuenfEuro,anzahlZweiEuro,anzahlEinEuro;publicvoidgeldBetragEinlesen(){
betrag =23;}publicvoidgeldBetragBerechnen(){
betrag= rest;
anzahlZehnEuro= betrag/10;
rest=rest %10;
anzahlFuenfEuro=betrag/5;
rest=rest %5;
anzahlZweiEuro=betrag%2;
rest=rest %2;
anzahlEinEuro = rest;}publicvoidgeldBetragAusgeben(){System.out.println("Der Betrag vom Betrag wird ausgezahlt in:");System.out.println("Zehn Euro Scheine "+ anzahlZehnEuro);System.out.println("Fuenf Euro Scheine "+ anzahlFuenfEuro);System.out.println("Zwei Euro Münzen "+ anzahlZweiEuro);System.out.println("Ein Euro Münzen"+ anzahlEinEuro);}}
Das ist der Code, das Ziel ist es z.B wenn 23 eingegeben wurde zu sagen . Man braucht 2 Zehn Euro Scheine und 1 Zwei Euro Münze und eine Ein Euro Münze. Was mache ich wieder falsch. Bitte in dem Schema des Programmes helfen, den sowas muss ich in der KA auch müssen.
Danke schonmal für Hilfen .
Ich muss das ja auch in der Klassenarbeit und mit If will ich das nicht machen, da wir das nicht durchgemacht haben und mir deswegen vllt Abzüge geben könnte.
Java:
anzahlFuenfEuro=betrag/5;
rest=rest %5;
Da fängt der Fehler an nach der Zeile
Java:
anzahlZehnEuro= betrag/10;
rest=rest %10;
Hier kommt ja die 2 wenn ich 23 eingebe, danach kackt es aber bei der % 5 ab.
generell, wenn man irgendwie code verdopplung drinen hat, was ja hier der fall ist, sollte man immer schaun ob man das nicht irgendwie vereinfachen kann. besonders bei solchen dingen mit zahlen, kann man sich super mit arrays helfen
hier ein beispiel:
Java:
publicclassGeldbetrag{int betrag;int[] werte ={100,50,20,10,5,1};int[] anzahl =newint[werte.length];publicvoidgeldBetragEinlesen(int betrag){this.betrag = betrag;}publicvoidgeldBetragBerechnen(){
anzahl =newint[werte.length];int rest = betrag;for(int i =0; i < werte.length; i++){
anzahl[i]= rest / werte[i];
rest = rest % werte[i];}}publicvoidgeldBetragAusgeben(){System.out.println("Der Betrag vom Betrag "+ betrag +" wird ausgezahlt in:");for(int i =0; i < werte.length; i++){if(anzahl[i]!=0){System.out.println(anzahl[i]+" mal "+ werte[i]);}}}publicstaticvoidmain(String[] args){Geldbetrag geldbetrag =newGeldbetrag();
geldbetrag.geldBetragEinlesen(69);
geldbetrag.geldBetragBerechnen();
geldbetrag.geldBetragAusgeben();}}
der vorteil ist, man kann das jetzt ganze einfach nach oben bis € 500 oder nach unten bis zu den cent erweitern, man muss nur das obige array anpassen.
nö, das ist eine standard unbungsaufgabe, bekommt jeder zweite student mal auf. wie im supermarkt... die kassiererin solls möglichst groß raus geben...
generell, wenn man irgendwie code verdopplung drinen hat, was ja hier der fall ist, sollte man immer schaun ob man das nicht irgendwie vereinfachen kann. besonders bei solchen dingen mit zahlen, kann man sich super mit arrays helfen
hier ein beispiel:
Java:
publicclassGeldbetrag{int betrag;int[] werte ={100,50,20,10,5,1};int[] anzahl =newint[werte.length];publicvoidgeldBetragEinlesen(int betrag){this.betrag = betrag;}publicvoidgeldBetragBerechnen(){
anzahl =newint[werte.length];int rest = betrag;for(int i =0; i < werte.length; i++){
anzahl[i]= rest / werte[i];
rest = rest % werte[i];}}publicvoidgeldBetragAusgeben(){System.out.println("Der Betrag vom Betrag "+ betrag +" wird ausgezahlt in:");for(int i =0; i < werte.length; i++){if(anzahl[i]!=0){System.out.println(anzahl[i]+" mal "+ werte[i]);}}}publicstaticvoidmain(String[] args){Geldbetrag geldbetrag =newGeldbetrag();
geldbetrag.geldBetragEinlesen(69);
geldbetrag.geldBetragBerechnen();
geldbetrag.geldBetragAusgeben();}}
der vorteil ist, man kann das jetzt ganze einfach nach oben bis € 500 oder nach unten bis zu den cent erweitern, man muss nur das obige array anpassen.
Natuerlich ist es so nicht schlecht wie du es machst, du musst aber hierbei auch das Niveau des Programmierers beruecksichtigen, meiner Meinung nach, ist deine Loesung fuer ihn zu schwer, er muss selber verstehen was er dort bastelt und deswegen habe versucht das ganze nachvollziehbarer zu machen.
die aufgabe zu... ok sorry jetzt seh ichs. er rechnet mit dem falschen wert weiter. ich dacht er hat die aufgabe schon fast und hat sich nur am anfang den rest mit betrag mit 0 überschrieben..
du wolltest ihn noch auf den fehler hinführen, das er immer mit dem anfangswert weiterrechnet anstatt mit dem rest..
meiner Meinung nach, ist deine Loesung fuer ihn zu schwer