Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-02-2005, 14:07   #1 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Ein bischen Rechnen...

Hi Zusammen!

Ich frage mich gerade wie ich eine math. Rechnung in AS wohl möglichst Speicher schonend aufbaue. Es geht darum das ich eine feste Zahl als Float habe Bsp: 1464.345676 und nun prüfen möchte wie oft der zweite Wert nämlich 180 in diese Zahl hineinpasst. Eine Restmenge sollte auch zurückgegeben werden.

Würde in diesem Fall bedeuten:

180 passt 8 mal in die Zahl 1464.345676
Restmenge 24.345676

Habe es schon mit einer while Schleife versucht.
Möchte das ganze aber mit 20 Werten durchspielen und
das dauert zu lange.

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 23-02-2005, 14:55   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hey
ActionScript:
  1. var a = 1464.345676;
  2.  var b = 180;
  3.  var c;
  4.  c = a % b;
  5.  trace(c);

% ist der Modulo Operator, der ist für sowas gedacht.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:01   #3 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Naja, Utopian wollte ja das ganzzahlige Ergebnis auch wissen:
ActionScript:
  1. function myDivision(pNum1, pNum2) {
  2.     return Math.round(pNum2 / pNum1) + " / Rest: " + pNum2 % pNum1;
  3. }
  4. trace(myDivision(180, 1464.345676));
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:02   #4 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Hi !

Danke euch beiden. Damit erspare ich mir unnötige While Schleifen.
Wäre auch ziemlich speicherintensiv geworden.

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:23   #5 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Dann halt so.
Soll nicht das Problem sein.
ActionScript:
  1. var a = 1464.345676;
  2. var b = 180;
  3. var c;
  4. c = Math.floor(a % b);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:43   #6 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
@theBiz: wie wärs wenn du mal n taschenrechner benutzen würdest und nachrechnest bevor du hier code postest

es geht nämlich so:
ActionScript:
  1. function wieOftPasseIchDaRein(a, b) {
  2.       trace(Math.floor(a / b));
  3.       trace("Rest: " + a % b);
  4.   }
  5.   wieOftPasseIchDaRein(1464.345676, 180);

gruß madFlanderZ

edit: ach hat der herr jetzt doch schon seinen fehler bemerkt?
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:44   #7 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Danke John und Tom
(reimt sich ja ;-)

Jetzt aber noch eine Herausforderung (ist mir schon peinlich)...

Ein Array mit 180, 50, 20, 10, 5 welches quasi den Wert pNum2 bzw. b darstellt soll geparst werden.

Ich gehen mit 5404 ins rennen und will jetzt wissen, wie oft passt die erste Zahl, also 180 dort hinein dann die 2. die 3. usw. bis man bei der 5 angekommen ist. Schließlich Ausgabe der Restmenge...

Geht sowas in einem Durchgang?

Gruß Christan
Utopian ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:45   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Sorry, falsch gesehen:
ActionScript:
  1. function wieOft(a, b) {
  2.     trace(Math.floor(a / b));
  3.     trace("Rest: " + a % b);
  4. }
  5. wieOft(1464.345676, 180);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:45   #9 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:48   #10 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
ActionScript:
  1. mA = [180, 50, 20, 10, 5];
  2. for (i in mA) {
  3.     wieOft(5404, mA[i]);
  4. }
  5. function wieOft(a, b) {
  6.     trace(Math.floor(a / b));
  7.     trace("Rest: " + a % b);
  8.     trace("-------------------------");
  9. }
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:48   #11 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
ActionScript:
  1. var numbersArr = new Array(180, 50, 20, 10, 5);
  2. var i = numbersArr.length;
  3. while(i--) {
  4.   trace(myDivision(numbersArr[i], 5404));
  5. }

das nenn ich mal gleichzeitig...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:53   #12 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
ActionScript:
  1. mA = [180, 50, 20, 10, 5];
  2.  for (i in mA) {
  3.      wieOft(5404, mA[i]);
  4.  }
  5.  function wieOft(a, b) {
  6.      trace(b + " passt " + Math.floor(a / b) + "x in " + a + " rein");
  7.      trace("Rest: " + a % b);
  8.      trace("-------------------------");
  9.  }

edit:
@maddin
Nix da Taschenrechner
Tastenkürzel: Win + "R";
calc (eingeben);
Enter drücken;
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------

Geändert von thebiz (23-02-2005 um 16:13 Uhr)
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 17:56   #13 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Boah super! Ihr seid spitze. Dickes Lob an euch alle.

Nur eines noch: Die Reihenfolge umkehren, nämlich beim größten Wert im Array anfangen, also 180, habe ich schon mit einer for-schleife gelöst.

Nun möchte ich aber noch das wenn die Zahl die 180 in die Zahl X z.B. neun mal hineinpasst, dieser Wert (ohne abrunden!) von der Zahl X abgezogen wird.

Beispiel:

X ist 8796.8664

180 passt 48 mal in X (Rest 156,8664)
50 passt 3 mal in 156,8664 (Rest 6,8664)
20 passt 0 mal in 6,8664 (Rest 6,8664)
10 passt 0 mal in 6,8664 (Rest 6,8664)
5 passt 1 mal in 6,8664 (Rest 1,8664)
----------------------------------------
(Rest 1,8664)

So in etwa habe ich mir das vorgestellt.
Wäre sowas machbar oder ist das wieder kompliziter?

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 23-02-2005, 21:30   #14 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Mal gespannt was noch kommt.
Wenn Du einen Nobelpreis bekommst,
dann sage bescheid.
ActionScript:
  1. var mA:Array = [5, 10, 20, 50, 180];
  2. var x:Number = 8796.8664;
  3. for (var i in mA) {
  4.     wieOft(x, mA[i]);
  5. }
  6. function wieOft(a, b) {
  7.     trace(b + " passt " + Math.floor(a / b) + "x in " + a + " Rest: " + (a % b));
  8.     x = a % b;
  9. }
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-02-2005, 21:38   #15 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Man kann es auch kürzer obgleich komplizierter schreiben:

ActionScript:
  1. var mA:Array = [5, 10, 20, 50, 180];
  2. var x:Number = 8796.8664;
  3. for (var i in mA) {
  4.     trace(mA[i] + " passt " + Math.floor(x / mA[i]) + "x in " + x + " Rest: " + (x %= mA[i]));
  5. }
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz 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 06:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele