No non intendo la trasposta, ma proprio il risultato di una rotazione verso destra o verso sinistra...cioè non saprei come spiegarlo, ma è semplice...anche perchè la matrice rappresenta lo schema di un labirinto, quindi ci sono uni e zeri(o comunque dei numeri), e per rotazione vuol dire che se la matrice è:
0 1 2 3
4 5 6 7
8 9 0 1
il risultato di una rotazione verso destra sarebbe:
8 4 0
9 5 1
0 6 2
1 7 3
Ma fortunatamente il problema non è questo, cioè la rotazione me la fa perfettamente e così il riempimento dell' array r...
Il main è il seguente:
e la funzione che definisce la matrice è:int main(){
int l, h, s, i, j;
char mode[3], **matrice;
// Fase di acquisizione input
scanf("%s", mode);
scanf("%d%d", &l, &h);
scanf("%d", &s);
// Allocazione memoria per matrice labirinto
matrice=nuova(l, h, matrice);
// Riempimento matrice labirinto
for (i=0; i<h; i++){
for (j=0;j<l;j++){
scanf("%s", &matrice[i][j]);
}
}
// Risolvi labirinto
destra(l, h, matrice);
// Stampa soluzione
printf("\n\n\n%s\n", mode);
printf("%d %d\n", l, h);
printf("%d\n", s);
soluzione(l, h, matrice);
azzera(h, matrice);
return 0;
}
char** nuova(int l, int h, char **p){
int i, j;
p=(char **) malloc( h * sizeof(char *));
for (i=0; i<h; i++){
p[i]=(char *) malloc( l * sizeof(char));
}
return p;
}

Rispondi quotando