# Zusammensetzung einer Zahl



## salexal (30. Nov 2009)

Hallo!

Möchte ein Programm schreiben das einen Geldbetrag einliest und dann vier Münzensorten. Es sollen dann alle möglichen Zusammensetzungen des Geldbetrages aus Münzen der vier Münzensorten ausgeben. z.B.: Geldbetrag 20;
                      Münzensorten: 1, 2, 5, 10,
                      Beispiele für Zusammensetzung: 20 x 1 oder 4 x 5 oder 5 x 2 + 1 x 10;

Hat jemand eine Idee wie man sich das in Java überlegen kann?

Danke für die Hilfe
lg alex


----------



## Michael... (30. Nov 2009)

salexal hat gesagt.:


> Hat jemand eine Idee wie man sich das in Java überlegen kann?


Hast Du denn grundsätzlich eine Idee, wie man das per Hand lösen könnte?  ;-)


----------



## salexal (30. Nov 2009)

Ja hab mir da mal was überlegt:

ich schaue bei jeder Kombination ob sie gleich 20 ist:
0x1 + 0x2 + 0x5 + 0x10 =? 20
wenn zwanzig dann ausgeben sonst verwerfen
0x1 + 0x2 + 0x5 + 1x10 =? 20
0x1 + 0x2 + 0x5 + 2x10 =? 20

0x1 + 0x2 + 1x5 + 0x10 =? 20
0x1 + 0x2 + 2x5 + 0x10 =? 20
....

weiß aber nicht wie ich das programmiern könnte
bitte um Hilfe

lg alex


----------



## SlaterB (30. Nov 2009)

gut, das ist genau was ich auch posten wollte bevor dann Michael... etwas pädagogischer fragte:

----
mal eine eher wenig originelle Idee (auf bessere bitte selber kommen)

seit x der gesuchte Betrag,

vier verschachtelte Schleifen

```
for i..
  for j..
    for k..
      for l..
```
die jeweils bis x laufen

ganz innen drinnen hat mal also immer 4 Zählvariablen zur Verfügung, die man als Anzahl der vier Münzen interpretiert,
nun ausrechnen, ob diese Kombination zusammen den gesuchten Betrag x ergibt, 
wenn ja schön ausgeben, sonst ignorieren

falls der Wert der vier Münzen erst eingegeben wird, geht das auch noch,
falls die Anzahl der Münzen variabel ist, wirds so recht schwer 
----


am besten erstmal mit einer Münze üben, auch da mit Schleife, sollte nur ein Ergebnis kommen,
bei zwei Münzen dann richtig anfangen zu rechnen


----------



## Jango (30. Nov 2009)

@ salexal:

Du möchtest sicher die ufgabe gelöst bekommen, den komplette Quellcode.
Am Wochenende hab ich zeit dafür, wenn du es wünscht auch gern mit Dokumentationen, weil du es ja sonst nicht erklären kannst.
Also wenn dir das bis nächste Woche reicht.


----------



## salexal (30. Nov 2009)

@ KatataFisch:

Danke das is sehr nett von dir!!!! Leider muss ich die aufgabe schon am donnerstag abgeben aber danke für dein angebot!!!!

Lg alex


----------



## salexal (30. Nov 2009)

Hat vielleicht jemand eine genauere Lösung bitte? Bin voll planlos wie ich meine idee umsetzen kann...

danke

lg alex


----------



## Michael... (30. Nov 2009)

Wenn die vier Münzsorten fest vorgegeben sind, kann man das wie SlaterB schon sagte mit vier verschachtelten Schleifen machen. In etwa so:

```
int betrag = 20;

for (int zehner=0; zehner<=betrag/10; zehner++) {
    for (int fuenfer=0; fuenfer<=betrag/5; fuenfer++) {
        for (int zweier=0; zweier<=betrag/2; zweier++) {
            for (int einer=0; einer<=betrag; einer++) {
                //Hier das Produkt aus zehner, fuenfer... berechnen und mit betrag vergleichen
                //und ggf eine Ausgabe machen
            }
        }
    }
}
```

Ist allerdings eine *Holzhammermethode* aber für Anfänger wie Dich vermutlich nicht viel besser lösbar. Besser wäre hier ein rekursiver Ansatz mit ein bisschen mehr Intelligenz


----------



## salexal (30. Nov 2009)

Danke, aber wie berechne ich das Produkt?

lg alex


----------



## SlaterB (30. Nov 2009)

int x = 2; // 2 10er
int y = 3; // 3 5er

int summe = x*10+y*5;
?


----------



## salexal (30. Nov 2009)

ich kapier die berechnung des Produktes nicht ganz.
warum x und y?

lg alex


----------



## SlaterB (30. Nov 2009)

das war ein Beispiel, kannst auch andere Variablen nehmen


----------



## salexal (30. Nov 2009)

:-(    verstehe die Schleifen aber die Berechnung nicht...

lg alex


----------



## SlaterB (30. Nov 2009)

int summe = i*10+j*5;
innerhalb der i + j Schleife wäre verständlicher?

beim Beispiel von Michael... heißen die Variablen noch anders, aber da ist wirklich nix zu erkennen?


----------



## salexal (30. Nov 2009)

wie innerhalb der i und j Schleife? Sorry aber kapier das grad garnicht 

lg alex


----------



## SlaterB (30. Nov 2009)

mir schien, du hättest schon verstanden, dass es um Schleifen ging und es dann DARIN spannend wird?


Michael... hat gesagt.:


> ```
> int betrag = 20;
> 
> for (int zehner=0; zehner<=betrag/10; zehner++) {
> ...





salexal hat gesagt.:


> Danke, aber wie berechne ich das Produkt?
> 
> lg alex


----------

