Multidimensionale Arrays

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
  • Guten Tag,


    ich habe folgendes kleines Problem:


    new Float:position[5][2];

    position={ // Zeile 50
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2}
    };


    Code
    D:\**.pwn(50 -- 51) : error 008: must be a constant expression; assumed zero
    D:\**.pwn(50 -- 55) : error 048: array dimensions do not match
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.



    ?(

  • Der zweite Fehler liegt daran, dass du als 2. Index nur 2 angegeben hast, allerdings 5 benutzt:
    position={ // Zeile 50
    {0.5,0.2}, // 1
    {0.5,0.2}, // 2
    {0.5,0.2}, // undefined
    {0.5,0.2}, // undefined
    {0.5,0.2} // undefined
    };


    Kostenlose Pawno Alternative / PAWN IDE -> PawnStar
    Mass Effect
    :love:

  • new Float:position[5][2]={
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2},
    {0.5,0.2}
    };


    So funktioniert das ja problemlos.
    Nur das zuweisen funktioniert nicht...


    Und warum sollte ich 4*5 Werte definieren (20), wenn ich nur 5*2 Werte benutze? (10)

  • Nur das zuweisen funktioniert nicht...


    Wenn du sie nicht beim initialisieren zuweist dann musst du den Array einzeln angeben.


    Sprich ->
    position[0][0] = 0.5;
    position[0][1] = 0.2;
    position[1][0] = 0.5;
    position[1][1] = 0.2;
    usw.


    Bei Floats ist eine direkte Stringähnliche Zuweisung nicht zu empfehlen, dafür unterscheidet sich das zu sehr ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Und wenn ich 28*3 (84) Werte zuweisen möchte,
    muss ich das mit 84 Zeilen schreiben?


    Das geht nicht anders?


    //edit:
    new Float:position[4][2];


    position[0]=Float:{0.5,0.5};
    position[1]=Float:{0.2,0.3};
    position[2]=Float:{0.3,2.1};
    position[3]=Float:{2.3,2.1};


    So gibt er mir keine Errors/Warnings aus.


    Aber warum kann ich das nicht anders machen?
    Warum spuckt er mir Errors aus?


    Ich versteh das nicht :S

  • Versuchs mal über 2 Variablen. Floats tun sich generell schwer, aber n Versuch isses wert.

    new Float:posX[3] = {0.1, 0.2, 0.3};
    new Float:posY[3] = {0.1, 0.2, 0.3};


    Alternativ kannst du dir die ganzen Koordinaten als String eintragen und bei Bedarf zum Float umwandeln, ist zwar keine schöne Lösung, dient aber möglicherweise der Benutzerfreundlichkeit.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'