Salve a tutti, come da titolo dovrei shiftare di n posizioni ogni riga della matrice.
Qui ho messo il link del codice del mio prototipo ma appena inserisco il numero di posizione da shiftare crasha.
Salve a tutti, come da titolo dovrei shiftare di n posizioni ogni riga della matrice.
Qui ho messo il link del codice del mio prototipo ma appena inserisco il numero di posizione da shiftare crasha.
Ho visto che in questo ciclo
nella linea in rosso utilizzi l'indice i-1 che all'inizio, per i=0, vale -1 ...codice:for( i = 0; i < righe; i++) { vett[i][0] = app; for( j = colonne-1; j > 0; j--) vett[i][j] = vett[i-1][j-1]; vett[i][colonne-1] = app ; }
Ovviamente -1 non è corretto...
Rivedi questa parte di algoritmo ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Non uscirà mai dal ciclo perchè "e" sarà sempre maggiore di 0
Poi non capisco cosa intendi per shiftare a sinistra...potresti fare un esempio numerico?
esempio:Originariamente inviato da Marco1995
Non uscirà mai dal ciclo perchè "e" sarà sempre maggiore di 0
Poi non capisco cosa intendi per shiftare a sinistra...potresti fare un esempio numerico?
Matrice:
3 4 6 8
5 6 7 2
1 3 5 7
1 4 8 2
Matrice spostata(shiftata) di 1:
4 6 8 3
6 7 2 5
3 5 7 1
4 8 2 1
Dall'esempio di output della matrice , non si capisce come possa produrlo la funzione che hai scritto !?
Vedendo l'esempio , io ho pensato :
1 prendi il primo elemento di una riga e lo salvi in una variabile temporanea
2 tramite un ciclo for che ripete fino a numerocolonne -1 , fai corrispondere ogni elemento al successivo
3 quando sei all'ultimo elemento della riga , fai corrispondere l'elemento alla variabile temporanea
-----
vett[i][0] = app; //questo non ha senso perche app non è mai inizializzata , forse
volevi salvare in app ???
codice:while ( e > 0 ) { for( i = 0; i < righe; i++) { app=vett[i][0] ; for( j = 0; j < colonne-1; j++) { vett[i][j] = vett[i][j+1]; } vett[i][colonne-1] = app ; } e--; }
Tecnologia
Grazie mille ad entrambi, non mi sono accorto di alcuni piccoli particolari.Originariamente inviato da torn24
Dall'esempio di output della matrice , non si capisce come possa produrlo la funzione che hai scritto !?
Vedendo l'esempio , io ho pensato :
1 prendi il primo elemento di una riga e lo salvi in una variabile temporanea
2 tramite un ciclo for che ripete fino a numerocolonne -1 , fai corrispondere ogni elemento al successivo
3 quando sei all'ultimo elemento della riga , fai corrispondere l'elemento alla variabile temporanea
-----
vett[i][0] = app; //questo non ha senso perche app non è mai inizializzata , forse
volevi salvare in app ???
codice:while ( e > 0 ) { for( i = 0; i < righe; i++) { app=vett[i][0] ; for( j = 0; j < colonne-1; j++) { vett[i][j] = vett[i][j+1]; } vett[i][colonne-1] = app ; } e--; }
Adesso ho capito..comunque come ti è già stato suggerito...Occhio agli indiciesempio:
Matrice:
3 4 6 8
5 6 7 2
1 3 5 7
1 4 8 2
Matrice spostata(shiftata) di 1:
4 6 8 3
6 7 2 5
3 5 7 1
4 8 2 1![]()
Per questo genere di problemi il debugger è ciò che fa a caso tuo![]()