Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Kombination aller möglichen münzen für ein betrag

Kombination aller möglichen münzen für ein betrag

Universität / Fachhochschule

Sonstiges

Tags: Sigma, Sonstig, Summenzeichen

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
BigFatBurger

BigFatBurger aktiv_icon

02:51 Uhr, 16.12.2015

Antworten
Guten Tag.

Ich Studiere Informatik und stoße bei der folgenden aufgabe auf das problem das ich die Gleichung, die zu implementieren ist, nicht verstehe, mir aber gleichzeitig die zeit ausgeht. Mir würde es daher sehr helfen wenn mir jemand etwas auführlicher beschrieben könnte was diese aufgabenstellung versucht zu sagen.

Es soll doch folgendes 7 mal addiert werden:
(1 Cent bis 2 Euro) mal den münkombinationen(?) gleich dem betrag?
Somit sind die münzwertde die dazughörigen kombinationen aber das geht nicht auf...

Zur übersicht und für die in Latex geschriebenen Mathematische Ausdrücke habe ich die Aufgabe als Bild hinzugefügt.


Math

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich bräuchte bitte einen kompletten Lösungsweg." (setzt voraus, dass der Fragesteller alle seine Lösungsversuche zur Frage hinzufügt und sich aktiv an der Problemlösung beteiligt.)
Online-Nachhilfe in Mathematik
Antwort
Bummerang

Bummerang

11:30 Uhr, 16.12.2015

Antworten
Hallo,

Du hast eine Vorgabe in Form einer Datenstruktur (Array, Liste, ...) von (Münz-) Werten. Entweder ist Dir die Anzahl n der Werte vorgegeben oder Du musst sie vorab ermitteln, das ist auch nicht beschrieben. Ausserdem kennst Du den zu ermittelnden Gesamtbetrag x. Letztendlich sollst Du eine rekursive Funktion schreiben, die die Gesamtzahl gemäß dieses Algorithmus ermittelt. Diese könnte in etwa so aussehen:

Integer betragM(Datenstruktur c, Integer n, Integer x)
{
     Integer m1;
     Integer m2=0;
     if (anzahl gleich 0) dann return 0;
     if (x=0) dann return 1;
    m1= betragM(c, n-1,x)
     if (cn-1x) dann m2= betragM(c, n,x-cn-1)
     return m1+m2;
}

Ich habe es nicht überprüft, aber intuitiv würde ich erwarten, dass die Werte c0 bis cn-1 aufsteigen sortiert sein müssen, damit das funktioniert. Aber wenn man die Funktion geschrieben hat, lässt sich das ja leicht überprüfen.
BigFatBurger

BigFatBurger aktiv_icon

22:29 Uhr, 16.12.2015

Antworten
Gut, also c sind alle Münzwerte gespeichert in einem Array (1 cent, 2 cent... 2 euro), n ist die anzahl der münzen (hier 8) und x der berag für den die kombinationen ermittelt werden sollen, stimmts?
Bedeutet an der stelle an der du "anzahl" geschrieben hast (erste if-anweisung) meintest du n?

Habe es eben so implementiert, gibt nen stackOverflow an der stelle wo er m2 berechnen soll aber daran kann ich arbeiten, schonmal besten Dank!
Antwort
Roman-22

Roman-22

04:04 Uhr, 17.12.2015

Antworten
Ja, ich denke Anzahl sollte n sein.
n ist beim Initialaufruf die Anzahl der verschiedenen Münzen, wird aber dann bei der Berechnung von M1 dekrementiert, was dem Entfernen des höchsten Münzwerts entspricht.
Und ja, x ist der Betrag, der zusammengebastelt werden soll, so bezeichbnet wie in deinem Angabetext.
Der Algorithmus sollte nach meinem Dafürhalten korrekt sein.

Hier eine schnelle Implementation in Mathcad (mit globalem Münzstapel):
Muenzen

Anm.: rows(c) liefert die Mächtigkeit des Münzvektors c, hier also 8.

Wenn du nichtganzzahlige Münzwerte verwendest, solltest du natürlich eine Konstante eps definieren mit zB eps=10^-8 und dann anstelle von x<0 x<-eps und anstelle von x=0 |x|<eps schreiben.

R


Frage beantwortet
BigFatBurger

BigFatBurger aktiv_icon

15:10 Uhr, 17.12.2015

Antworten
So funktioniert und habs verstanden.
Boomerang du hattest nur einen fehler bei dem gößergleich. Es ist ein kleinergleich.
Danke euch beiden.
Antwort
Bummerang

Bummerang

10:02 Uhr, 18.12.2015

Antworten
Hallo,

"Boomerang du hattest nur einen fehler bei dem gößergleich. Es ist ein kleinergleich."

Kommt davon, wenn man erst anders herum rangehen will, weshalb ich gedanklich das "kleiner" aus der Aufgabenstellung in ein " " umgewandelt habe. Ausserdem hatte ich das Ganze nur in einer theoretischen, allgemein verständlichen Form als Pseudocode geschrieben und nicht konkret überprüft.