Ciao, mi sto approcciando per le prime volte al C facendo qualche esercizio. il seguente programma per generare una sorta di cammino casuale in una matrice mi si blocca a metà ogni tanto, cioè: magari va una volta, due, tre, ecc consecutive e poi se lo faccio partire una n-sima volta si blocca. sapete dirmi il perchè e magari cosa posso fare per rimediare?? grazie in anticipo . ps: lo faccio partire da prompt
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
/* inizializza vettore di punti '.' */
int i = 0, j = 0, mossa, passi[4];
char vet[10][10];
for (i = 0 ; i <= 9; i++)
{
for (j = 0 ; j <= 9 ; j++)
{
vet[i][j] = '.';
printf("%c ", vet[i][j]);
if (j == 9) printf("\n");
}
}
printf("\n\n");
/*cammino casuale*/
i = 0; j = 0;
srand( (unsigned) time(NULL));
for (char c = 'A' ; c <= 'Z' ; c++)
{
vet[i][j] = c ;
int passi[4] = { 1 , 1 , 1 , 1 };
repeat:
mossa = rand() % 4;
if (mossa == 3)
{
if (vet[i][j+1] == '.' && j != 9) { j++; continue; }
else passi[mossa] = 0;
}
else if (mossa == 2)
{
if (vet[i+1][j] == '.' && i != 9) { i++; continue; }
else passi[mossa] = 0;
}
else if (mossa == 1)
{
if (vet[i][j-1] == '.' && j != 0) { j--; continue; }
else passi[mossa] = 0;
}
else
{
if (vet[i-1][j] == '.' && i != 0) { i--; continue; }
else passi[mossa] = 0;
}
if (passi[0] == 0 && passi[1] == 0 && passi[2] == 0 && passi[3]) break;
else goto repeat;
}
/*Stampa il vettore*/
for (i = 0 ; i <= 9; i++)
{
for (j = 0 ; j <= 9 ; j++)
{
printf("%c ", vet[i][j]);
if (j == 9) printf("\n");
}
}
return 0;
}