Tri dans un tableau 2 dimension sous c++!!..

Bonjour,
debutant en programmation et j'ai reussi a etablir un tableau a 2D mais ça reste de le trier en deux ordres(croissant et decroissant!!)...merci d'avance!!
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. Je ne vois pas trop à quoi peut servir de trier un tableau à deux dimensions; enfin, bref, ce n'est pas mon problème.
    Moi je le trierais en considérant qu'il s'agit d'un tableau à une dimension.
    Par exemple pour trier 'tab[4][5]', je trierais en fait comme un tableau de 20 éléments; aucune difficulté en utilisant la notation:
    *(&tab[0] + i + 4*j) ou *(&tab[0] + 5*i + j) avec 0 <= i < 4 et 0 <= j < 5
    l'un ou l'autre suivant que l'on veuille trier dans le sens horizontal ou vertical.
    Bon courage.
    1
    1. Contributeur
      Salut,
      Comme a dit loupius, la bonne façon est de considérer ton tableau 2D comme un simple tableau.
      Par exemple :
      int tab[5][5];
      (*tab)[i]; avec i allant de 0 à 5*5;
      

      Ou si tu n'aimes pas la notation (*tab)[i], tu peux utiliser un pointeur et te ramener exactement avec la même notation qu'un simple tableau.
      int tab[5][5];
      int *p=*tab;
      p[i]; avec i allant de 0 à 5*5;
      

      Cdlt
      1
      1. ok je vais tenter!!...merci mec!!
        1
        1. Bonjour,

          En fait en C++ (en C aussi d'ailleur) Quand tu déclare un tableau disons:
          int tab[5][5];
          Ton programme se réserve en mémoir un tableau de 25 int consécutif. Donc se déplacer dans un tableau à 2 dimensions de taille 5 par 5 revient à se déplacer dans un tableau de taille 25. Car ton
          tab
          n'est rien d'autre qu'un pointeur sur une zone mémoire et avec l'arithmétique des pointeur, ajouter 1 à un pointeur de type int revient à décaler le pointeur de la taille d'un int sur ton architecture.

          https://chgi.developpez.com/pointeur/

          Cordialement,
          1
          1. Quelqu'un aurait il une réponse un peu plus développé svp ??
            0