@Daniel: Also spontan würde ich sagen, dass du bei der ermittleStueckelung() nur den Betrag als Parameter übergeben darfst. Also etwa so:
public static int[] ermittleStueckelung(double dBetrag) {...}
Definiere dein Array stueckelung einfach in der Methode, dann musst du es auch nicht übergeben.
Edit: Wird die Anzahl der Münzen bei dir richtig berechnet? Sieht irgendwie kompliziert aus bei dir mit dem a-(a%b)?! Geht auch einfach mit typecast auf int und dann Ganzzahldivision…
Geht das eigentlich nochmal wer manuell durch was man fabriziert hat? Ich peil nicht, warum ich 0% kriege, alles läuft und die Beträge werden so gestückelt wie sie sollen, so ein man setze beliebigen Fäkalbegriff ein :motz:
Hmm, wenn ich mir so die Teilaufgabenstellung 3.4c) so ansehe, sehe ich nicht was eine Aussage über Parameterübergabe darstellt:
Zusammenfassend:
public
ermittleStueckelung
die 2 Funktionen verwenden
Rückgabe Array int mit Größe 9
Reihenfolge im Array
Also mehr lese ich da nicht raus…
Und was diese Aufgabe allgemein angeht, hier meine Version:
public class Wechselgeld {
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("Bitte einen Betrag eingeben!");
System.exit( 0 );
}
double[] euroMuenzen = {10, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
double geld = Double.parseDouble(args[0]) + 0.001;
int[] ergebnis = new int[euroMuenzen.length];
ergebnis = ermittleStueckelung(geld, euroMuenzen);
for(int i = 0; i < euroMuenzen.length; ++i) {
if(ergebnis[i] == 1) {
System.out.println(ergebnis[i] + " " + euroMuenzen[i] + " Euro Muenze");
}
else {
System.out.println(ergebnis[i] + " " + euroMuenzen[i] + " Euro Muenzen");
}
}
}
public static double ermittleRestbetrag(double geld, double euroMuenzen[]) {
for(int i = 0; i < euroMuenzen.length; ++i) {
if(geld >= euroMuenzen[i]) {
return (geld % euroMuenzen[i]);
}
}
return(666);
}
public static int ermittleStueckzahl(double geld, double euroMuenzen[]) {
for(int i = 0; i < euroMuenzen.length; ++i) {
if(geld >= euroMuenzen[i]) {
return (int)(geld / euroMuenzen[i]);
}
}
return(666);
}
public static int[] ermittleStueckelung(double geld, double euroMuenzen[]) {
int[] anzahl = new int[euroMuenzen.length];
for(int i = 0; i < euroMuenzen.length; ++i) {
if(geld >= euroMuenzen[i]) {
anzahl[i] = ermittleStueckzahl(geld, euroMuenzen);
geld = ermittleRestbetrag(geld, euroMuenzen);
}
else {
anzahl[i] = 0;
}
}
return(anzahl);
}
}
Soweit ich das noch sehe, habe ich nichts verbrochen was gegen die Aufgabenstellung verstößt (gut, ich habe den Rundungsfehler hingepfuscht. aber wer besitzt schon zehntelcent oder kleineres ).
Aber ich sehe momentan in meinem 5% code eh den Wald vor lauter Bäumen nicht mehr…
Trotzdem heist es ja:
Darum lasse ich mich mal überraschen, wieviel Punkte das „5%“ Programm letztendlich bringt.
Ist dann wohl mit “Euro-Betrag” ein Parameter “Betrag” gemeint?
Und mit dem 2. “Münzwert” ein Parameter “Muenzwert”?
Sehe ich nicht ein, denn dann müsste ja das Testprogramm explizit auf genau “Euro-Betrag” und “Münzwert” testen. Wobei letzteres schon extrem unglücklich mit dem Umlaut ü angegeben wäre, was man ja vermeiden soll.
Das mit dem Array, ähnlich wie in der vorgehenden Aufgabe würde ich noch verstehen, aber ich sehe es nicht ein meinen Funktionen 9 und 1 Parameter zu übergeben. 1 Array ist ja wohl auch 1 Parameter. Und in der Aufgabenstellung steht ja auch nichts über Arraybenutzung, ausser das die letzte Methode eines zurückgeben soll.
Gut, mag sein dass mein Programm ein bischen verpfuscht erscheint;
Aber es ist doch nicht falsch?!
das steht ja aber auch auf der algo seite. es muss auch nicht beuten, wenn du keine 100% erreichst in dem testcase, dass deine loesung nicht korrekt ist.
ja beuten … da werden die prozente nur so erbeutet. aber richtig … wenn der mensch ders dann nochma anguggt irgendeinen stuss findet, den das testcase-programm nich findet … gibts natürlich noch abzug.
Naja ich bin der Ansicht wenn man 100% hat und nicht aktiv versucht hat den Testcase auszutricksen dann wird man auch 100% der Punkte bekommen, so Spielereien wie aber mein Prog ist richtig und ihr seid zu dumm um einen gescheiten Testcase zu proggen würd ich vorerst nicht machen … klar wirds solche fälle geben aber dann sollte man klug genug sein und sich nach dem testcase richten, und den übungsgruppenleiter dann direkt mit seiner super-duper-implementierung konfrontieren … ich würd lieber mein prog nochmal schreiben als auf mein recht pochen “aber des ist doch logisch alles so” …