if array problem



  • Hi,

    ich habe ein kleines problem.

    ich habe eine if abfrage gemacht die nur ausgeführt wird wenn ein leerzeichen im array ist aber er macht es nur einmal und nur im array[0][0]

    code ausschnit (ich hofe das reicht)
    feld[3][3] das am anfang auf leerzeichen gesetz wird ohne if klapt das perfekt nur das man die andere felder überschreibt

    do
    {
    scanf("%i",&zahl1);
    scanf("%i",&zahl2);
    zahl1--;
    zahl2--;
    
    if(   feld[zahl1][zahl2] == ' ' )
    
      {
          feld[zahl1][zahl2] = spieler[x].zeichen[0];
      }
    
    } while(x <=1)
    

    ich wolte nur ein kleines spiel names tic tac toe basteln (Mensch gegen Mensch)^^ 😃

    ps meine rechtschreibung ist nicht besonders gut ich hoffe ihr verzeiht mir



  • Das wird wohl an x liegen. Die Bedingung der do-while-Schleife ist nicht erfüllt, ein Durchlauf wird aber immer bei einer do-while-Schleife gemacht. Ist dir eigentlich klar, dass du x innerhalb dieser Schleife gar nicht veränderst? Das heißt, würde die Bedingung zutreffen, hättest du eine Endlosschleife.

    Außerdem solltest du an deiner Einrückung arbeiten, der Code ist so sehr schlecht zu lesen. Und spieler[x].zeichen[0] muss wahrscheinlich auch kein char-Array sein, da reicht sicher ein char, richtig?

    P.S.: Ich verzeihe dir deine Rechtschreibung... aber deine Zeichensetzung nicht! 😃



  • _matze schrieb:

    Das wird wohl an x liegen. Die Bedingung der do-while-Schleife ist nicht erfüllt, ein Durchlauf wird aber immer bei einer do-while-Schleife gemacht. Ist dir eigentlich klar, dass du x innerhalb dieser Schleife gar nicht veränderst? Das heißt, würde die Bedingung zutreffen, hättest du eine Endlosschleife.

    Außerdem solltest du an deiner Einrückung arbeiten, der Code ist so sehr schlecht zu lesen. Und spieler[x].zeichen[0] muss wahrscheinlich auch kein char-Array sein, da reicht sicher ein char, richtig?

    P.S.: Ich verzeihe dir deine Rechtschreibung... aber deine Zeichensetzung nicht! 😃

    ^^
    spieler[x].zeichen[0] hab daraus jetz spieler[x].zeichen habe das irgendwie übersehen bzw vergesen oO

    die do-while-Schleife ist schon richtig (es felt ja der rest code)^^
    wie schon gesagt er soll feld[zahl1][zahl2] überprüfen ob eine leehrzeichen drin wenn die bedingung war ist soll er das ausführen
    also im leehren feld ein zeichen reinmachen.

    Nehmen wir ein Beispiel:
    da es ein 3 mal 3 array ist und der array nur aus leehrzeichen besteht (char feld[3][3]= {' '};) seht es am anfang so aus :

    [ ][ ][ ]
    [ ][ ][ ]
    [ ][ ][ ]

    man gibt zwei zahlen an
    1,1

    durch --
    werden aus denn beiden Zahlen 0,0
    jetz kommt die bedingung. macht er auch

    [X][ ][ ]
    [ ][ ][ ]
    [ ][ ][ ]

    aber wenn ich am anfang
    1,2
    0,1

    [ ][X][ ]
    [ ][ ][ ]
    [ ][ ][ ]

    klapt nicht!

    ich hofe das es diesmal verständlicher ist.



  • Hast du dir dein Feld mal im Debugger angesehen? Du kannst so nicht initialisieren. Es ist wirklich nur das Element 0,0 ein Leerzeichen. Das Programm arbeitet also eigentlich genauso, wie vorgesehen, nur dein Array passt nicht. Mach für jedes Element eine Zuweisung oder verschachtele 2 Schleifen (wenn es einen kürzeren Weg gibt, kenne ich ihn nicht), und dein Problem ist erledigt.



  • char feld[3][3]= {{32,32,32},{32,32,32},{32,32,32}};
    


  • danke es klapt 😃


Anmelden zum Antworten