PDA

Visualizza la versione completa : [C] Passare variabile per indirizzo


johnnny
14-12-2010, 22:45
ragazzi devo assolutamente passare una variabile per indirizzo, in questo problema nel for di output dopo la chiamata a mosse cavallo, nella condizione del for deve esserci j<i e non j<7 forzato. come faccio a passarla per indirizzo? una mano grazieee

#include<stdio.h>
#include<stdlib.h>

void mosse_cavallo(int i,int pos_iniz[],int pos_possibili[2][8]);
int main()
{ int index,i,j,pos_iniz[3],pos_possibili[2][8];

printf("Inserisci le coordinate della posizione iniziale del cavallo:\n");
scanf("%d %d",&pos_iniz[0],&pos_iniz[1]);
printf("Le possibili mosse del cavallo sono:\n");
mosse_cavallo(i,pos_iniz,pos_possibili);
for(j=0;j<=7;j++)
{printf("%d",pos_possibili[0][j]);
printf("%d\n",pos_possibili[1][j]);
}






}


void mosse_cavallo(int i,int pos_iniz[],int pos_possibili[2][8])
{ int x,y;
i=0;

x=pos_iniz[0]+1;
y=pos_iniz[1]+2;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]+1;
y=pos_iniz[1]-2;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]-1;
y=pos_iniz[1]+2;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]-1;
y=pos_iniz[1]-2;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]+2;
y=pos_iniz[1]+1;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]+2;
y=pos_iniz[1]-1;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]-2;
y=pos_iniz[1]+1;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
x=pos_iniz[0]-2;
y=pos_iniz[1]-1;
if((x>=0)&&(y>=0))
{if((x<=7)&&(y<=7))
{pos_possibili[0][i]=x;
pos_possibili[1][i]=y;
i=i+1;
}
}
return;
}

Alex'87
14-12-2010, 22:59
Originariamente inviato da johnnny
ragazzi devo assolutamente passare una variabile per indirizzo, in questo problema nel for di output dopo la chiamata a mosse cavallo, nella condizione del for deve esserci j<i e non j<7 forzato. come faccio a passarla per indirizzo? una mano grazieee

Devi passare l'indirizzo di i?

La dichiari come puntatore e poi la passi usando &, così:


void mosse_cavallo(int *i,int pos_iniz[],int pos_possibili[2][8]);

mosse_cavallo(&i,pos_iniz,pos_possibili);

Ovviamente all'interno di mosse_cavallo non potrai usare i (che ora contiene un indirizzo) ma *i (ovvero il valore puntato da quell'indirizzo). Guardati come funzionano i puntatori...

johnnny
14-12-2010, 23:09
grazie mille alex adesso funziona, non sai quanto ti sono grato, mi sa che devo ripeterli, io ho un manuale di c , ma non riesco a capirli tanto bene, purtroppo all'università ho saltato prp la lezione sui puntatori. cioè io non mettevo l'asterisco solo nel sottoprogramma mosse_cavallo perchè io so che puntano ad un certo indirizzo le variabili puntatore, ma se *i non la metto uguale a qualkosa a cosa punterà mai? capito qual'è il mio dubbio?

Loading