Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c]shiftare verso sinitra di n posizioni ogni riga di una matrice

    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.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ho visto che in questo ciclo

    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 ;      
              }
    nella linea in rosso utilizzi l'indice i-1 che all'inizio, per i=0, vale -1 ...

    Ovviamente -1 non è corretto...

    Rivedi questa parte di algoritmo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    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?

  4. #4
    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?
    esempio:
    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

  5. #5
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    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

  6. #6

    Re: ciao

    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--;                                           
        }
    Grazie mille ad entrambi, non mi sono accorto di alcuni piccoli particolari.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    esempio:
    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
    Adesso ho capito..comunque come ti è già stato suggerito...Occhio agli indici
    Per questo genere di problemi il debugger è ciò che fa a caso tuo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.