DESIGN STUDIO FORUM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
PortailAccueilRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -23%
(Black Friday) Apple watch Apple SE GPS 44mm ...
Voir le deal
199 €

 

 Décaler les colonnes d'un tableau

Aller en bas 
AuteurMessage
Admin
Admin
Admin


Masculin
Nombre de messages : 138
Age : 38
Date d'inscription : 02/09/2006

Décaler les colonnes d'un tableau Empty
MessageSujet: Décaler les colonnes d'un tableau   Décaler les colonnes d'un tableau EmptyJeu 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;
}
Revenir en haut Aller en bas
https://design.jeun.fr
 
Décaler les colonnes d'un tableau
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
DESIGN STUDIO FORUM :: programmation :: C,C++-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser