In 5 Variablen den höchsten Wert herausfinden

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Leute
    Ich habe Folgendes Problem:
    ich habe in meinem Script 5 Variablen die unterschiedliche Werte haben also ungefähr so:
    new var1, new var2, new var3, new var4, new var5;


    var1 = 2, var2 = 5,



    Bla Bla und so weiter.
    wie kann ich jetzt herausfinden welche die höchste ist. Ich meine soll ich etwa tausend if abfragen machen?
    bitte um hilfe!

  • Gut man könnte ja auch einen Array machen mit new var[5];
    Also meine Variablen heißen;


    TeamDeathmatch_vote;
    BattleRoyal_vote;
    TouchDown_vote;
    1vsMio_vote;
    Freemode_vote;


    eigentlich sollen die Spieler abstimmen welchen mode man als nächsts Spielt. Und der mit den höchsten Stimmen wird gespielt,
    Wenn eine dann /vote Freemode schreibt, habe ich dass dann immer so gemacht: Freemode_vote++;
    und es soll dann die Variable mit den meisten Stimmen herausgefunden werden.

  • stock GetHeighest(...)
    {
    new args = numargs();
    new i, heighest = -1;
    while(i < args)
    {
    if(getarg(i) > getarg(heighest) || heighest == -1)
    {
    heighest = i;
    }
    i++;
    }
    return heighest+1;
    }


    Bsp:

    new vote = GetHeighest(1,3,1,23,6);
    //würde 4 zurückgeben, da die 4. Zahl die höchste ist

  • Was ist denn daran so schwer?
    Du kannst es auch ohne Array machen,ist nur ohne unglaublich umständlich.
    Daher empfehle ich ein Array + enum, damit du die Namen direkt benutzen kannst.


    Alle Einträge im Array durchgehen, checken ob der größer ist als der zuletzt größte Eintrag und gegebenfalls dann höchsten Eintrag neu festlegen.


    enum e_Modes {
    Mode_TeamDeathmatch = 0,
    Mode_BattleRoyal,
    Mode_TouchDown,
    Mode_1vsMio,
    Mode_Freemode,
    }
    new
    Mode_Votes[ e_Modes ];


    public OnFilterScriptInit()
    {
    // Hier ein Beispiel !
    Mode_Votes[Mode_TeamDeathmatch] = 2;
    Mode_Votes[Mode_BattleRoyal] = 1;
    Mode_Votes[Mode_TouchDown] = 5;
    Mode_Votes[Mode_1vsMio] = 0;
    Mode_Votes[Mode_Freemode] = 3;
    // Beispiel Ende
    new
    iModeIndex = -1,
    iValue = 0;
    for(new i ; i < sizeof(Mode_Votes) ; i++) {
    if( iValue < Mode_Votes[ e_Modes:i ] ) {
    iValue = Mode_Votes[ e_Modes:i ];
    iModeIndex = i;
    }
    }
    if( iModeIndex != -1) {
    printf("Höchster Eintrag bei Index %d mit Wert %d",iModeIndex, iValue);
    }
    else {
    printf("Das wahr wohl nichts! Kein Eintrag wurde als größer identifiziert");
    }
    return 1;
    }


    //Edit: Ist sogar noch besser mit GetHeighest. Da muss er wenigstens nicht die Variablen umbenennen und kann es direkt nutzen :).