Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-07-2005, 15:59   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Zürich
Beiträge: 172
grösste variable ermitteln

hallo leuts

ich habe vier variablen

var1=5
var2=2
var3=3
var4=1

wie kann ich per AS herausfinden welche varibale die höchste zahl hat?


thx und flash on
bamsi ist offline   Mit Zitat antworten
Alt 07-07-2005, 16:35   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
z.b.
ActionScript:
  1. var1 = 5;
  2. var2 = 2;
  3. var3 = 3;
  4. var4 = 1;
  5. //
  6. var ary = [var1, var2, var3, var4];
  7. ary.sort();
  8. trace(ary[ary.length-1]);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-07-2005, 16:40   #3 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
am einfachsten wäre es mit nem array, weil das dann eine unbegrenzte anzahl von Werten haben kann.

ActionScript:
  1. function getMax ( arr:Array )
  2. {
  3. var nMax:Number = 0;
  4.  
  5. for ( no:String in arr )
  6. {
  7. if ( arr[no] > nMax ) nMax = arr[no];
  8. }
  9.  
  10. return nMax;
  11. }

oder mithilfe des Math.max() Befehls:

ActionScript:
  1. function getMax ( arr:Array )
  2. {
  3. var nMax:Number = 0;
  4.  
  5. for ( no:String in arr )
  6. {
  7. nMax = Math.max( nMax, arr[no] );
  8. }
  9.  
  10. return nMax;
  11. }

[edit]
zu spät ^^

@hgseib: auch ne gute idee
pokepika ist offline   Mit Zitat antworten
Alt 07-07-2005, 16:51   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...und wo wir so lustig dabei sind:

ActionScript:
  1. var1 = 5;
  2. var2 = 2;
  3. var3 = 3;
  4. var4 = 1;
  5. var big = 0;
  6. for (var x = 1; x<=4; x++) {
  7.     big = this["var"+x]>big ? this["var"+x] : big;
  8. }
  9. trace(big);
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 08-07-2005, 06:39   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Und wo wir gerade so schön am variieren sind, hier noch eine kleine Version von hgseibs Methode:

ActionScript:
  1. function max(){
  2.     return arguments.sort().pop();
  3. }
  4.  
  5. var1 = 5;
  6. var2 = 2;
  7. var3 = 3;
  8. var4 = 1;
  9. trace( max( var1, var2, var3, var4));

mfg. r.
bokel ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:25   #6 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
wow ^^

da wär ich jetzt gar nicht draufgekommen..

wäre aber praktischer, wenn man auch nen array anhängen könnte..
pokepika ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:34   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
@pokepika:
Das geht doch auch...
PHP-Code:
function max(){
        return 
arguments.sort().pop();
}

var 
arrW = [ 5231];

tracemax.applythisarrW)); 
Super Ding bokel!
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:39   #8 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
hmm, ok ^^

aber es geht nicht so:

ActionScript:
  1. trace( max( meinArr ) );

bzw. nicht ohne änderungen an der funktion..
pokepika ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:40   #9 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Wieso Funktion ändern, wenns doch mit den apply so toll klappt?
__________________
ERROR: Signature is too large

Geändert von rendner[i] (08-07-2005 um 11:41 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:43   #10 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
ist ja schon ok
pokepika ist offline   Mit Zitat antworten
Alt 08-07-2005, 11:53   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Mit Arrays ginge es so:

ActionScript:
  1. function max(){
  2.         return arguments.toString().split(",").sort().pop();
  3. }
  4.  
  5. var1 = 5;
  6. var2 = 2;
  7. var3 = 3;
  8. var4 = 1;
  9. trace( max( var1, [[var2, var3], var4]));

Das würde dann sogar verschachtelte Arrays plätten und man könnte Arrays und Zahlen mischen. Allerdings dürfen die Werte dann keine Kommas enthalten. Aber bei Zahlen ist das ja der Fall.

mfg .r
bokel ist offline   Mit Zitat antworten
Alt 08-07-2005, 12:00   #12 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
@ bokel

Aber Zahlen werden doch durch einen Punkt getrennt und somit funtzt Dein teil auch bei Zahlen mit Kommastellen.
Oder haste was anderes gemeint?

EDIT:
Allerdings könnte man nicht mehr wirklich die Zahlen nach grösse ordnen.
Das "Array.NUMERIC" als Parameter für sort geht dann nicht mehr.
Da müsste man ne eigene Funktion wieder schreiben die die Werte als Zahlen behandelt.
PHP-Code:
function max(){
        return 
arguments.toString().split(",").sortnum ).pop();
}
function 
numa){
    var 
Number);
    var 
Number);
    if ( 
)return -1;
      else if ( 
)return 1;
    else return 
0;
}

var1 5.3;
var2 2;
var3 13;
var4 1;
tracemaxvar1, [[var2var3], var4])); 
Oder denke ich mal wieder zu kompliziert?
__________________
ERROR: Signature is too large

Geändert von rendner[i] (08-07-2005 um 12:10 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 08-07-2005, 12:06   #13 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ne stimmt schon, mit Zahlen klappt es auf jeden Fall. Aber so wie die Funktion definiert ist, würde sie auch mit Strings funktionieren. Es dürften halt nur keine Kommas drin vorkommen.

ActionScript:
  1. function max(){
  2.         return arguments.toString().split(",").sort().pop();
  3. }
  4.  
  5. var1 = "hallo";
  6. var2 = "bokel";
  7. var3 = "wie";
  8. var4 = "gehts";
  9. trace( max( var1, [[var2, var3], var4]));

Schönes Beispiel für den Vorteil von nicht typisierten Sprachen.

mfg. r

Geändert von bokel (08-07-2005 um 12:24 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 08-07-2005, 12:35   #14 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
@rendner: Ah, jetzt musste ich aber auch mal einen Moment überlegen, warum Array.NUMERIC nicht mehr funktioniert. Aber jetzt ist es mir klar: Durch toString() werden die Werte, die vorher Zahlen waren, zu Strings. Mit einer Sortierfunktion kann man das dann aushebeln. Gut zu wissen, man lernt doch nie aus, selbst bei sowas einfachem wie hier.

mfg .r

Geändert von bokel (08-07-2005 um 12:37 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 08-07-2005, 12:44   #15 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
...und das jeden Tag aufs neue ( zumindest für mich ist das Forum hier ne wahre Fundgrube ).

Deine Funktion habe ich mir gleich mal abgespeichert
__________________
ERROR: Signature is too large
rendner[i] 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 17:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele