Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Automatentheorie » Programm entwickeln » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Programm entwickeln
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Michi123
unregistriert
Programm entwickeln Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hi zusammen,

ich habe hier eine Hausaufgabe vor mir liegen, wozu ich den Quellcode schreiben muss.

Entwickeln Sie für einen Automaten ein Programm, das eine optimale Münzrückgabe berechnet. Ziel ist es, den Geldrückgabebetrag aus möglichst wenig Münzen bestehen zu lassen. Rückgabebeträge, die über 5 Euro liegen, werden teilweise in Scheinen zurückgegeben, so dass wir hier nur Beträge unter 5 Euro betrachten müssen. Ziel der Berechnung ist es also, einen beliebigen Betrag (der kleiner ist als 5 Euro) so zu zerlegen, dass er aus möglichst wenig Münzen besteht. Ihr Programm soll ausgeben, welche Münze Sie wie oft benötigen.

Meine Ideen:
Mein Vorschlag:

/*Muenzen.java*/
public class Muenzen
{
public static void main (String[]args)
*/Hier muessen erst einmal die einzelnen Werte der Muenzen angegeben werden?*/

int 0; /*Eingabewert*/
int a; /*2 Euro Muneze*/
int b; /*1 Euro Muenze*/
int c; /*50 Cent Muenze*/
int d; /*20 Cent Muenze*/
int e; /*10 Cent Muenze*/
int f; /*5 Cent Muenze*/
int g; /*2 Cent Muenze*/
int h; /*1 Cent Muenze*/
{System.out.println("");

Wie bekomme ich jetzt aber hin, dass mir die jeweiligen Möglichkeiten berechnet werden?


Vielen Dank für Eure Hilfe :-)
18.10.2014 17:13
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hast du ein Problem beim theoretischen Herangehen oder beim Umwandeln in Code?

Ich würde so vorgehen:
Wert einlesen, der ausgezahlt werden soll (in Cent).
Solange Wert > 0:
- größtmogliche Münze auszahlen
- Wert um Wert der Münze verringern.

Kennst du schon Arrays?
int[] Muenzen = {200, 100, 50, 20, 10, 5, 2, 1};
ist leserlicher aus 8 einzelne Variablen. Und wenn man doch noch Scheine auszahlen will, geht das auch schneller zu ändern.

__________________
Syntax Highlighting fürs Board (Link)
18.10.2014 17:55 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Michi123
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe momentan das Problem, das ich es nicht recht umsetzen kann. Arrays habe ich leider noch nicht.

Bisher hatte ich immer nur einfache Sachen, wie die Oberfläche eines Würfels berechnen lassen oder Addtion, Subtraktion, Multiplikation bzw. Division zweier Zahlen.
18.10.2014 21:06
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dann eben der umständliche Weg:
code:
1:
2:
3:
4:
while (wert >= muenzwert) {
    wert -= muenzwert;
    System.out.println(muenzwert);
}

und das dann kopieren und die Werte einsetzen. Bei Bedarf kannst du es auch in den Variablen speichern, aber bitte gib ihnen nicht die Namen a, b, c, d, ... sondern etwas, das auch ohne Kommentar verständlich ist, z.B. muenze200cent, muenze100cent, ... .

__________________
Syntax Highlighting fürs Board (Link)
18.10.2014 21:23 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Michi123
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für deine Hilfe :-)

Das while ist zwingend notwendig? Wenn ja, würde das wahrscheinlich erst in der kommenden Vorlesung kommen :-)
18.10.2014 21:26
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nicht zwingend, aber ich glaube kaum, dass Rekursion von euch erwartet wird:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
ststic void output(float betrag){
	if(betrag >= 2)
	{
		System.out.println("2 EUR");
		output(betrag - 2);
	}
	else if(betrag >= 1)
	{
		System.out.println("1 EUR");
		output(betrag - 1);
	}
	else if(betrag >= 0.5)
	{
		System.out.println("50 Ct");
		output(betrag - 0.5);
	}
	//...
}



Gruß,

Karlito
18.10.2014 22:35 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da eine Münze maximal zwei mal erforderlich ist (z.B. 4,50€), kannst du es auch mit if machen und kopieren:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if (wert >= 200) { //in Cent
    wert -= 200;
    System.out.println("2 Euro");
}
if (wert >= 200) { //doppelt erforderlich, da 2 * 200 < 500
    wert -= 200;
    System.out.println("2 Euro");
}
//[...] 1 Euro
if (wert >= 50) { //einmal reicht, da 2 * 50 = 100, was die nächste Münze ist
    wert -= 50;
    System.out.println("50 Cent");
}
//[...] 20, 10, 5, 2, 1 Cent


Ist natürlich ganz schlechter Stil. Wie es besser geht, wirst du bald lernen.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 19.10.2014 08:14.

19.10.2014 08:13 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Michi123
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für Eure Hilfe :-)
19.10.2014 11:11
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Automatentheorie » Programm entwickeln