Admin Admin
Nombre de messages : 138 Age : 38 Date d'inscription : 02/09/2006
| Sujet: Décaler les colonnes d'un tableau Jeu 5 Oct - 14:28 | |
| Voici trois méthodes (de la plus simple à la plus rapide) permetant de décaler les colonnes d'un tableau vers la gauche (c'est à dire vers les indices plus faibles) en ajoutant des zéro dans la dernière colonne ainsi libérée. - Code:
-
#include <string.h> /* memmove et pas memcpy, car chevauchement. */
#define NLIG 3 #define NCOL 6
int main (void) { int lig, col; int shiftw = 2; int Tab[NLIG][NCOL];
/* decalage "a la main" */ for (lig = 0; lig < NLIG; ++lig) { for (col = 0; col < shiftw-1; ++col) { Tab[lig][col] = Tab[lig][col+1]; /* decalage a gauche */ } Tab[lig][shiftw-1] = 0 ;/* introduction de 0 à droite */ }
/* decalage optimise memmove */ for (lig = 0; lig < NLIG; ++lig) { memmove (&Tab[lig][0], &Tab[lig][1], (shiftw-1)*sizeof(int)); /* decalage a gauche */ Tab[lig][shiftw-1] = 0; /* introduction de 0 a droite */ }
{ /* decalage optimise memmove+pointeurs */ int (*plig)[NCOL];
for (plig = &Tab[0]; plig < &Tab[NLIG]; ++plig) { memmove (&plig[0][0], &plig[0][1], (shiftw-1)*sizeof(int)); /* decalage a gauche */ Tab[lig][shiftw-1] = 0; /* introduction de 0 a droite */ } } return 0; }
| |
|