PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NXC Problem mit if, wtf???



orph
16.05.2009, 11:12
Hallo Leute
Ich bin z.Z. am Programmieren eines Roboterarms der durch einen NXT von Lego angesteuert ist. Im Moment klappt aber folgender Code-Teil nicht so ganz:



int ball[3][3];

ball[0][0] = 1; ball[0][1] = 0; ball[0][2] = 0;
ball[1][0] = 0; ball[1][1] = 0; ball[1][2] = 0;
ball[2][0] = 0; ball[2][1] = 0; ball[2][2] = 0;

if(ball[0][0] == 1){
exchangeball(3);}
if(ball[2][0] == 1){
exchangeball(1);}

if(ball[0][1] == 1){
exchangeball(5);}
if(ball[2][1] == 1){
exchangeball(6);}

if(ball[0][2] == 1){
exchangeball(10);}
if(ball[2][2] == 1){
exchangeball(8);}

Die Variable ball ist ein Array, indem die Elemente 1 oder 0 sein können. Diejenigen die dann 1 sind sollten vertauscht werden. Mein Problem ist nun aber, dass hier nicht nur das allererste if, und d.h. exchangeball(3); ausgeführt wird, sonder der Reihe nach alle andern auch.
Hat jemand eine Ahnung wieso?

thx

vohopri
16.05.2009, 11:34
hallo orph,

das ist so nicht nachvollziehbar, aber


int ball[3][3];

ball[0][0] = 1; ball[0][1] = 0; ball[0][2] = 0;
ball[1][0] = 0; ball[1][1] = 0; ball[1][2] = 0;
ball[2][0] = 0; ball[2][1] = 0; ball[2][2] = 0;

if(ball[0][0] == 1){
exchangeball(3);}
if(ball[2][0] == 1){
// lasse hier den Wert von ball[2][0] ausgeben
exchangeball(1);}

if(ball[0][1] == 1){
exchangeball(5);}
if(ball[2][1] == 1){
exchangeball(6);}

if(ball[0][2] == 1){
exchangeball(10);}
if(ball[2][2] == 1){
exchangeball(8);}

Dann weisst du, ob mit dem ballarray etwas unvorhergesehenes angestellt wurde, und ob die Bedingung wirklich als wahr erkannt wird.

grüsse,
Hannes