Zählervariable wird nicht richtig inititalisiert
-
Hallo Leute

Ich habe oben beschriebenes Problem bei folgendem Codeschnipsel:
for(int j = 0; j < shipsize; j--) { if(mysea[pos_x + j][pos_y] == 'w') doable = 1; }Ich kann sagen, dass die Variablen diese Werte haben:
int j = -838610 - eindeutig unerwartet
int shipsize = 3 - ein erwarteter Wert
mysea ist char[10][10] bestehend aus 100 'w' auch korrekt
int pos_x = 0 - erwartet
int pos_y = 0 - erwartet
doable wird wundersamerweise aber auf 1 gesetz, obwohl der Teil des Programms doch garnicht erreicht wird(?).Ich wäre für eine zügige Hilfe sehr dankbar
-
Sorry.. Habe vergessen, eine richtige Frage zu stellen.
Kann mir jemand bei meinem Problem Helfen?
-
therufuser schrieb:
Sorry.. Habe vergessen, eine richtige Frage zu stellen.
Kann mir jemand bei meinem Problem Helfen?
Das nenn ich mal eine richtige Frage 
Wenn j dein einziges Problem ist, dann hast du wohl j++ und nicht j-- gemeint. Und da es bei 0 anfängt, wird doable gleich auf 1 gesetzt.
-
Also ich bin stolz drauf ^^
Die Schleife läuft jetzt in Folgender Form:
for(int j = 0; j > (shipsize * -1); j--) { if(mysea[pos_x][pos_y + j] == 'w') doable = 1; }Ok.. das war ein Denkfehler.. Nachts scheint die Konzentration doch zu sinken. Danke, dass du mir bei meinem Problem geholfen hast

-
therufuser schrieb:
shipsize * -1wtf!?
-
shipsize ist ein Integer. Ich invertiere ihn, um ins Negative abwärts zu zählen.
Ich muss doch -1 wohl kaum in Klammern stellen, wie in der Mathematik üblich?
-
-shipsizetät's auch...
-
Ok... wusst' ich nich

-
Sieht schon etwas komisch aus... eine Zählvariable mit 0 zu initialisieren und bei jedem Schleifendurchlauf zu verringern.
Ich find´ Folgendes einfacher zu verstehen:for( unsigned int j = 0; j < shipsize && j < pos_y; ++j ) { if(mysea[pos_x][pos_y - j] == 'w') doable = 1; }