Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-04-2004, 15:23   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Lausanne
Beiträge: 133
An alle Rechengenies (Denksportaufgabe:) )

hallo leute....

ich möchte irgendwelche Geldbeträge berechnen. und geld ist ja bekanntlich nicht unendlich teilbar (zumindest bares nicht )

jetzt ist das so, dass ich eine gewisse Anzahl Personen haben, und eine gewisse Anzahl Geld.
Sagen wir:
15 Einheiten Geld und 8 Personen.

Jetzt möchte ich das Geld gleichmässig auf diese acht Personen aufteilen, und zwar so, dass der Restbetrag eine ganze Einheit ist, aber sie müssen möglichst viel bekommen. Und eben, es muss einen Betrag sein, der auszahlbar ist (hier in der CH ist die kleinste Einheit 0.05 Fr.) Und schlussendlich möchte ich dass, auf irgendwelche Beispiele anwenden....

So, ich persönlich bin ziemlich aufgeschmissen, deshalb hab ich gedacht, ihr könnt mir auf die Sprünge helfen...

Viel Spass und danke für jede Hilfe!

gdm
__________________
nevermind - just drink cuba libre
don_miguel ist offline   Mit Zitat antworten
Alt 27-04-2004, 15:55   #2 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Zitat:
Restbetrag eine ganze Einheit
Also soll bei dem Beispiel folgendes Herauskommen?
Jeder 1€ - Rest 7€?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:04   #3 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
nein, jeder bekommt 1,85 und 0,2 ist rest... so meinst Du das, ne?

moment... ueberlege mal n bisserl...
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:12   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
hi,

hab's so wie querkopf verstanden und könnte folgendes anbieten:
ActionScript:
  1. var geld    = 15;
  2. var personen    = 8;
  3. var proPerson   = Math.floor(geld*100/personen)/100; // --> 1.87
  4. var ausgezahlt  = proPerson * personen; // --> 14.96
  5. var rest    = Math.round((geld - ausgezahlt)*100)/100; // --> 0.04
  6.  

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:22   #5 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
*g* cool. an sowas hatte ich auch gedacht, konnte es nur jetzt auf die Schnelle noch nicht formulieren...
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:25   #6 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
mh, faellt mir jetzt bei naeherer betrachtung aber erst auf, dass da das problem mit den 0,05 als kleinste moegliche einheit noch nicht beruecksichtigt ist.... aber das sollte ja auch noch ergaenzbar sein.
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:31   #7 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
*grummel* ...ich komme jetzt auch auf die schnelle auf keine loesung.
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:46   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
ups,
hast recht.
Hier ne überarbeitete Version:
ActionScript:
  1. var geld    = 15;
  2. var personen    = 8;
  3. var kleinste    = 5;
  4. var proPerson   = Math.floor(geld*100/personen);
  5. proPerson   -= proPerson % kleinste;
  6. proPerson   /= 100; // 1.85
  7. var ausgezahlt  = proPerson * personen;  // 14.8
  8. var rest    = Math.round((geld - ausgezahlt)*100)/100; // 0.2
  9.  
gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 27-04-2004, 16:55   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Lausanne
Beiträge: 133
Zitat:
Geschrieben von johanness
Also soll bei dem Beispiel folgendes Herauskommen?
Jeder 1€ - Rest 7€?
Zitat:
Geschrieben von querkopf
nein, jeder bekommt 1,85 und 0,2 ist rest... so meinst Du das, ne?

moment... ueberlege mal n bisserl...
hm, leider beides nicht ganz korrekt
herauskommen sollte: jeder 1.75 CHF/E und Rest 1 CHF/E

ich will ja, dass alle einen möglichst grossen betrag bekommen, aber der Rest soll entweder 1,2,3 etc. sein, aber natürlich möglichst klein gehalten

danke romän, ich schau mir jetzt dein Vorschlag gleich an und hoffe dass ich eben noch das Probem mit dem Rest lösen kann.

gdm
__________________
nevermind - just drink cuba libre

Geändert von don_miguel (27-04-2004 um 17:19 Uhr)
don_miguel ist offline   Mit Zitat antworten
Alt 27-04-2004, 17:19   #10 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
Lesen müsste man können
Jetzt hab sogar ich's kapiert... aber leider keine schnelle Lösung...
romän ist offline   Mit Zitat antworten
Alt 27-04-2004, 17:21   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Lausanne
Beiträge: 133
bin ebenfalls immernoch am hirnen.....(hab gerade rausgefunden was der operator % so anstellt )
__________________
nevermind - just drink cuba libre
don_miguel ist offline   Mit Zitat antworten
Alt 27-04-2004, 17:32   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Lausanne
Beiträge: 133
vielleicht am schluss sowas anhängen

ActionScript:
  1. if (rest != (1 || 2 || 3 || 0){
  2.              rest = Math.ceil(rest)
  3. }
und dann das ganze nochmals durchführen.......?
__________________
nevermind - just drink cuba libre

Geändert von don_miguel (27-04-2004 um 17:33 Uhr)
don_miguel ist offline   Mit Zitat antworten
Alt 27-04-2004, 17:48   #13 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
nee, das würde nicht gehen, weil dieser Ausdruck nur gegen rest != 1 prüft, aber die Idee mit dem wiederholten checken hatte ich auch.

Ist zwar nicht sonderlich schön, scheint aber zu funktionieren:
ActionScript:
  1. var geld    = 15;
  2. var personen    = 8;
  3. var kleinste    = 5;
  4. var proPerson, ausgezahlt, rest;
  5.  
  6. proPerson = Math.floor(geld*100/personen);
  7. rest = (geld * 100 - (proPerson -= (proPerson % kleinste)) * personen);
  8.  
  9. while(rest % 100){
  10. rest = (geld * 100 - (proPerson -= kleinste) * personen);
  11. }
  12.  
  13. proPerson /= 100;
  14. ausgezahlt = proPerson * personen;
  15. rest /= 100;
gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 27-04-2004, 18:07   #14 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
hi.

so gehts kürzer:

ActionScript:
  1. gesamt = 15;
  2. personen = 8;
  3. kleinste = 0.05;
  4.  
  5. rest = (gesamt*1/kleinste % personen) * kleinste;
  6. jeder = (gesamt-rest) / personen;
  7. summe = personen * jeder + rest;
  8. trace("jeder: " + jeder);
  9. trace("Rest: " + rest);
  10. trace("Summe: " + summe);


Grüße
Sascha

edit: ok, sehe es auch jetzt erst...
__________________
12:15, press return

Geändert von ludabruda (27-04-2004 um 18:08 Uhr)
ludabruda ist offline   Mit Zitat antworten
Alt 27-04-2004, 20:25   #15 (permalink)
Banned
 
Benutzerbild von projecktx
 
Registriert seit: Sep 2003
Beiträge: 2.071
hmm hatte ggerad lust dazu ....

ActionScript:
  1. gesamt = 15;
  2. personen = 8;
  3. kleinste = 0.05;
  4. waehrung = "SFr";
  5.  
  6. einheiten=int(gesamt/kleinste);
  7. zwischen=int(einheiten/personen);
  8. jeder=zwischen*kleinste;
  9. if (Number(jeder*personen)>Number(gesamt)){
  10. jeder-kleinste;
  11. };
  12. rest=gesamt-jeder*personen;
  13. trace ("Jeder der "+personen+" beteiligten erhält "+jeder+" "+waehrung+" von dem Gesamtbetrag "+gesamt+" "+waehrung+", es bleiben "+rest+" "+waehrung+" für ein ausgiebiges Abendmal mit deiner Freundin.");

gruss sascha

Geändert von projecktx (27-04-2004 um 20:36 Uhr)
projecktx ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele