blatt3 - aufgabe 4

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

blatt3 - aufgabe 4
sollen wir den zu stückelnden betrag zufällig ermitteln, oder per kommandozeile eingeben?
kann ich nicht so rauslesen ; )


kommandozeile …

35-Prozent-Hürde
Ging es euch auch so, dass das Programm “Wechselgeld” einwandfrei gelaufen ist, aber beim Hochladen trotzdem nur 35% angezeigt wurden? Das liegt daran, dass das Testcase als Datentyp anscheinend nur double akzeptiert. Mit float haut es also nicht hin!

Hier noch eine kleine Checkliste, falls der Server beim Hochladen meckert:

  • Bei den Funktionsnamen nicht vertippt? Auch die Groß- und Kleinschreibung beachtet?
  • Die Klasse als public deklariert?
  • Sämtliche vorgegebene Funktionen als public static deklariert?

afaik ists egal…
…obs zufällig oder kommandozeile ist
die ermittleStueckelung() Methode muss mit Parameter aufrufbar sein und den Betrag sowie die Stückelung ausgeben. Ein Beispielsfall kann dann auch in main() mit festen Wert eingebaut sein.

Wobei Kommanozeile zum testen einfach bequemer ist :wink:

Komandozeile wohl kaum
Ich habe meine Testwerte als Array in meinem Programm drinne…
Von der Kommandozeile können wir doch noch gar nicht einlesen…

double vs. float
Ja, ja, die 35-Prozent-Hürde… Liegt wirklich an den floats. Mit double klappts dann auch. Danke nochmal für den Tipp, Airhardt! Das wäre wohl das letzte gewesen, auf das ich gekommen wäre…

Wobei ich es jetzt echt alles andere als naheliegend finde bei zwei Nachkommastellen gleich ein double zu nehmen… Am einfachsten wäre sowiso das Ganze gleich in Cent (alos mit int) zu rechnen, dann spart man sich nämlich auch diesen 1-Cent FP-modulo-Rundungsfehler.


was solln des in der aufgabe vier unter a heissen, ermittlerestbetrag, i kapier net was die wollen, wir sollen eine reelle zahl als ersten und einen münzwert als zweiten parameter eingeben, und die methode soll so ausehen:

float ermittleRestbetrag(float wert, int münzbetrag);

aber ich kapier echt nicht was ich da wie machen soll was sind die reellen zahlen die wir eingeben, was der münzwert was für ein rest betrag, ich kapiers net ich wollts in C umsetzten das ich wenigstens schon die rechenschritte hab und dann kann ichs leichter in java machen aber kein plan was ich da machen soll.


“Reelle Zahl” bedeutet Fließkommazahl, also vom Typ double. Mit float müsste es normalerweise auch gehen, aber das Testcase vom Abgabesystem besteht darauf, dass man double nimmt. Sonst kriegst du nur eine Wertung von 35%, obwohl der Rest passt (siehe oben).

Deine Funktion ermittleRestbetrag kriegt zwei Argumente:

  • den Geldbetrag, den du in Münzen zerlegen willst
  • den Wert der Münze, in die du deinen Betrag zerlegen willst
    Die Rückgabe ist dann das Geld, was übrig bleibt, wenn dein Gesamtbetrag nicht komplett in diese Münzen zerlegbar ist.

Die Funktion müsste dann folgendermaßen aussehen:
double ermittleRestbetrag(double wert, double münzbetrag);

Beispiel: Du hast 5,12 € und willst die in 2-€-Münzen zerlegen. Dann kriegst du zwei 2-€-Münzen raus und es bleiben 1,12 € Restbetrag übrig. Und genau diesen Restbetrag rechnet deine Funktion aus.
Der Funktionsaufruf sieht dann so aus:
double rest = ermittleRestbetrag(5.12, 2.00);

Und wie macht man das jetzt? - Ganz einfach: Stichwort Modulo (Prozentzeichen)!


Ups.


ja des war mir schon klar wie des geht des problem war, ich hab den schmarn net richtig gelesen und nicht kapiert was die da wirklich wollen, aber bei deinen beispiel wär des wohl „return 5.12%2.00;“

wenns in Java so geht wie in C.


Genau.


ich habe, wie oben schon mal erwähnt, gleich am anfang alles in cent umgerechnet, und rechne deswegen von da an nur noch mit integer.

die prozentzahl die ich beim hochladen bekomme, ist doch eigenltich völlig egal oder?? oder nimmt er dann die datei nicht an?

weil sonst ist mir das ziemlich wurst, weil die lösung meiner meinung nach auch so zu hundertprozent richtig ist…


Naja, solange die drei Methoden den Betrag als double übernehmen (so stehts ja in der Aufgabe) und die Methode ermittleRestbetrag(…) auch ein double zurückgibt, kannst du dann innerhalb der Methoden das auch mit int rechnen - bringt nur nicht viel. Ich hatte in meinem obigen Post eigentlich gemeint, das man auch int an die Methoden übergibt, aber das geht ja wegen der Aufgabenstellung nicht - das wäre also definitiv falsch.

Keine Ahnung wie genau die Sourcen korregiert werden, aber wenn man sich mit den Datentypen, Methodennamen, etc. an die Aufgabenstellung hält (und double verwendet :rolleyes: ) sollten man auch auf 100% kommen.


Also, ich persönlich würde es nicht riskieren, bloß wegen ein paar Formalitätsstreitigkeiten wertvolle Punkte zu verspielen. :finger:

Dann scheitert aber die…
…uhm, Verifikation, weil dein Algorithmus nicht wie spezifiert double Variablen übernimmt, auch wenn beim Test die richtigen Werte rauskommen (tun sie nicht mehr, wenn man mit einem double-Parameter die static Methoden aufruft) @quincy

45%
nAbend!
Kann mir zufällig noch schnell jemand sagen, woran es liegen könnte,
dass ich beim Upload von Wechselgeld.java nur 45% hab?
Ich hab keine Ahnung, funktioniert eigtl. einwandfrei


Das kann ich toppen:

Mein Wechselgeld.java funktioniert tadellos und bringt stolze 5% :#:

Habe langsam keine Lust mehr das umzuschreiben, damit es auch das Testprogramm versteht… :motz:

Quellcode
Hallo zusammen,

bin ein noob und komme echt nicht weiter hat nicht mal einer Lust seinen Code zu posten, weil ich :

  1. wissen will wie mans macht
  2. im zweifelsfall einen ähnlichen abgeben will(45 Punkte sind viel!!)
    :wand:
    :wand:
    :wand:

Das Problem mit den 5% hatte ich bei der Cypher Aufgabe.
Hab dann ne Methode umbenannt.
War aber wohl nicht die Ursache des Problems, sondern eher
Zufall, dass ich dann 100% hatte. Man hat mich dann nämlich darauf
hingewiesen, dass ich es unterlassen soll, vorgegebene Methoden
umzubenennen. Woran das mit den 5% jetzt liegt kann ich dir leider
auch nicht sagen. Ich hab jetzt auch keinen Bock mehr.
Muss ich mich wohl mit den 45% zufrieden geben. Vielleicht isses ja nicht
so schlimm.

@FunkyJoe : Hier is mein Sourcecode (bringt beim TestCase leider nur 45%)

Attachment:
Wechselgeld.java: https://fsi.cs.fau.de/unb-attachments/post_28607/Wechselgeld.java