Stefani
Nuovo Utente
- Messaggi
- 2
- Reazioni
- 0
- Punteggio
- 24
Ciao! :)
Ho un problema con questo esercizio:
"Scrivete un programma che generi un "cammino casuale" in un vettore 10x10.
Il vettore conterrà dei caratteri, inizialmente saranno tutti '.' .
Il programma deve passare casualmente da un elemento all'altro muovendosi in alto, in basso, a sinistra o a destra di una posizione soltanto. Gli elementi visitati dal programma dovranno essere etichettati con le lettere che vanno dalla A alla Z nell'ordine in cui vengono visitati. "
Ho scritto il codice, ma non riesco a capire perché una volta compilato il programma, come output anziché stamparmi tutte le lettere, me ne stampa solo alcune. Cos'è che sbaglio? :help:
Ecco il codice:
Ho un problema con questo esercizio:
"Scrivete un programma che generi un "cammino casuale" in un vettore 10x10.
Il vettore conterrà dei caratteri, inizialmente saranno tutti '.' .
Il programma deve passare casualmente da un elemento all'altro muovendosi in alto, in basso, a sinistra o a destra di una posizione soltanto. Gli elementi visitati dal programma dovranno essere etichettati con le lettere che vanno dalla A alla Z nell'ordine in cui vengono visitati. "
Ho scritto il codice, ma non riesco a capire perché una volta compilato il programma, come output anziché stamparmi tutte le lettere, me ne stampa solo alcune. Cos'è che sbaglio? :help:
Ecco il codice:
Codice:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define DIM 10
int main(){
int i, j;
int c, r, dir;
int vettore[DIM][DIM];
char lettera=65;
srand((unsigned) time(NULL));
for(i=0; i<DIM; i++){
for(j=0; j<DIM; j++)
vettore[i][j]='.';
}
r=rand()%10;
c=rand()%10;
vettore[r][c]=lettera;
do{
dir=rand()%10;
dir/=4;
lettera++;
switch(dir){
case 0: if (vettore[r-1][c]=='.') vettore[r-1][c]=lettera; break;
case 1: if (vettore[r+1][c]=='.') vettore[r+1][c]=lettera; break;
case 2: if (vettore[r][c-1]=='.') vettore[r][c-1]=lettera; break;
case 3: if (vettore[r][c+1]=='.') vettore[r][c+1]=lettera; break;
}
}while(lettera<90);
for(i=0; i<DIM; i++){
for(j=0; j<DIM; j++)
printf("%2c", vettore[i][j]);
printf("\n");
}
return 0;
}