Ciao,
@spudhead: grazie della risposta, mi hai tolto il dubbio che avevo, poi ho provato un attimo e sono riuscito a crearla.
Il codice che volevo scrivere in effetti non si può fare con le matrici allocate staticamente, ma serve per forza un vettore di puntatori.
@ulisse89: era quello che non volevo sentire, infatti quello che dici (sempre se ho capito bene quello che itendevi) da quanto ho capito da questa lezione è che non si possono spostare i puntatori di una matrice allocata staticamente.
Quindi o si usa una matrice d'appoggio come l'esempio di spudhead oppure la si alloca dinamicamente almeno in parte.
Il codice per fare quello che volevo è il seguente, propongo le 2 soluzioni, cosi si può notare anche la differenza di peso computazionale.
Soluzione copia incolla (matrice statica):
- Codice: Seleziona tutto
void shift_matrix(char matrix[][LEN_RIGA])
{
int r,c;
for(r = 0 ; r < N-1; r++) //l'ultima riga non la copio, la devo sovrascrivere
for(c = 0 ; c < 100 ; c++)
matrix[r][c] = matrix[r+1][c];
}
Soluzione shift puntatori (matrice parzialmente dinamica)
- Codice: Seleziona tutto
void shift_matrix(char *matrix[N])
{
int r;
char *temp;
temp = matrix[0];
for(r = 0 ; r < N-1; r++)
matrix[r] = matrix[r+1];
matrix[r] = temp;
}
Soluzione 1 -> 400 cicli e 400 assegnazioni di variabili
Soluzione 2 -> 4 cicli e 6 assegnazioni di variabili!
Grazie mille!