Laden...

Berechnung von Münzen

Erstellt von ernsti vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.170 Views
E
ernsti Themenstarter:in
38 Beiträge seit 2005
vor 15 Jahren
Berechnung von Münzen

Hallo zusammen !

Ich habe einen riesen Denkfehler, und darum bitte ich euch um Hilfe.
Ich habe in der Kassa nur 3 Euro und 5 Euro Münzen (eventuell auch mal eine 3. bzw. 4. Münze).
Jetzt möchte der Kunde von mir 15 Euro haben.
und zwar in folgender Form:

1 x 5 Euro + 3 x 3 Euro.

Nun suche ich einen algrithmus, der mir das erleichtert.
Ich hoffe, dass mir jemand tipps, links geben kann.
danke !

B
214 Beiträge seit 2005
vor 15 Jahren

Der Denkfehler ist, dass es keine 3 € Münzen gibt 😁

Sorry konnt ich mir nicht verkneifen 😉

Gibt der Kunde vor, in welchen Münzen er seinen Betrag ausgegeben haben möchte?
Btw: 1x 5€ + 3 X 3€ gibt 14 🙂

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

1.378 Beiträge seit 2006
vor 15 Jahren

Aus deinem Beispiel ist für mich noch nicht ersichtlich, was der Algorithmus können soll. Sollen so wenige Münzen wie möglich verwendet werden oder nach welchen Kriterien soll das ablaufen? Wenn du das weißt, erklärt sich der Algorithmus vermutlich eh von alleine.

Lg XXX

T
21 Beiträge seit 2008
vor 15 Jahren

Mal ganz von Bionics berechtigten Einwuerfen abgesehen ... aber ungefaer so isses nen ganz einfacher Algo:


int[] muenzenDa = new int[] { 5, 3 };
int[] muenzenGeb = new int[muenzenDa.Length];

int kohleWill = 15;
int kohleGeb = 0;

for(int i=0; i<muenzenDa.Length; i++)
{
   int anz = 0;
   while( (kohleGeb + muenzenDa[i]) <= kohleWill)
   {
       kohleGeb += muenzenDa[i];
      anz++;
   }
    muenzenGeb[i] = anz;
}

string ausgabe = "Gebe dir ";
foreach(int muenze in muenzenDa)
   ausgabe += muenzenGeb[i] .ToString()+ " mal " + muenzenDa[i].ToString() + " Euro, ";
ausgabe += " wobei " (kohleWill - kohleGeb).ToString() + " Euren uebrig bleiben."

Wenn du nun noch einbauen willst, wie viele Muenzen maximal enthalten sind, einfach noch nen array mit den anzahlen der muenzen rin und das dann in der schleife mit runter zaehlen oder so

E
ernsti Themenstarter:in
38 Beiträge seit 2005
vor 15 Jahren

ich weiss dass es keine 3 und 5 Euro münzen gibt, ist ja nur für das beispiel wichtig.
Der Kunde DARF NICHT vorgeben welche Münzen er haben möchte, sondern nur den Betrag z.B. eben 14 Euro (nicht 15). Ich suche nach einem Algoritmus, der mir aufgrund meiner verfügbaren Münzen den maximalen Auszahlbetrag berechnet.

Ich könnte dem Kunden aufgrund meiner verfügbaren Münzen folgendes anbieten:

Höchstmöglicher Auszahlbetrag mit 5 Euro Münzen = 10 Euro
Höchstmöglicher Auszahlbetrag mit 3 Euro Münzen = 12 Euro

Daher soll 1 x 5 + 3 x 3 Berechnet werden.

915 Beiträge seit 2006
vor 15 Jahren

Hrm, du brauchst dafür eine Verfügbarkeitsprüfung um deine dynamsich gehaltenen Listen zu füllen.

Dann gehst du von den größten Verfügbaren Betrag aus, wenn größter Verfügbarer Betrag z.b. dein 5 Euroscheine nicht vorhanden oder Komuliert größer als gewünschter Betrag gehe zur nächsten Liste. Wiederhole das solange bis Betrag erfüllt ist.

Diese Art der Verfügbarkeitsprüfung würde somit immer versuchen anhand deiner größt verfügbaren Geldmittel so wenig wie möglich Kleingeld auszuspuken.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

C
252 Beiträge seit 2007
vor 15 Jahren

Hört sich für mich nach nem Greedy-Algorithmus an.

915 Beiträge seit 2006
vor 15 Jahren

Jup genau das 🙂

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(