Les matrices

info8bou Messages postés 1 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 décembre 2008 - 26 déc. 2008 à 22:35
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 27 déc. 2008 à 18:31
bonjour tous le monde,
 dans cette fonction je veux afficher les élèmes du matrice mais sans répéter les élèmes


exemple:12345432134


l'affichage c'est :12345


mais la fonction ne marche pas avec tous les exemples,aidez moi svp


  // Fonction déplasser la matrice dans un tab
   void tab2 ()
     { a=0;
       for (i=0;i<=1;i++)
         {
            for (j=0;j<=(N-1);j++)
              {
               
                tab[a]=MAT[i][j];
                a++;
                   
                   
              }
          }
      }


 
 /* Fonction pour afficher les sommets */
   void les_sommets()
    {
      int b;
      b=a/2;
        for(i=0;i<=b;i++)           // afficher la tab de sommets
         {
           if (tab[i] != tab[i+1])
             cout << tab[i] <<endl;
            b=a;
            cout << tab[b] <<endl;
            }
    }

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 déc. 2008 à 18:31
Salut,

Ne me dis pas que tu recopies le contenu de ta matrice dans un tableau juste pour la parcourir ? Nan s'il te plait, ne me dit pas ça. Ce serait trop atroce. Je ne pourrais y survivre.

Plus sérieusement, le recopiage de mémoire qui sert à rien... vaut mieux s'en passer. Faut savoir que le processeur, moins il en fait, mieux on se porte.

Pour n'afficher les composantes qu'une seule fois, il faut tester chaque composante avec les composantes déjà affichées. Ce qui est aussi une opération longue, mais celle-ci est nécessaire ! Après on peut essayer d'optimiser la chose en triant les éléments déjà affichés... Mais ce serait aussi consommateur de temps CPU.


<hr />
#include <stdlib.h>
#include <stdio.h>
#include <time.h>#define N 5
#define M 10

int m[N][M];

int main()
{
  int bFound;          /* Pour savoir si on a déjà affiché cette valeur       */
  int nI, nJ, nK, nL;

  /* Initialisation du générateur pseudo aléatoire */
  srand(time(NULL));

  /* Intialisation d'une matrice */
  for (nI = 0; nI < N; nI++)
    for (nJ = 0; nJ < M; nJ++)
      m[nI][nJ] = rand() % 20;

  /* Affichage de la matrice */
  for (nI = 0; nI < N; nI++)
  {
    for (nJ = 0; nJ < M; nJ++)
      printf("%2d ", m[nI][nJ]);
    printf("\n");
  }

  printf("\n");

  /* Affichage des composantes une seule fois */
  for (nI = 0; nI < N; nI++)
  {
    for (nJ = 0; nJ < M; nJ++)
    {
      bFound = 0;

      /* On regarde dans les premières lignes */
      for (nK = 0; nK < nI; nK++)
      {
        for (nL = 0; nL < M; nL++)
          if (m[nI][nJ] == m[nK][nL])
          {
            bFound = 1;
            break;
          }

        if (bFound) break;
      }

      /* On regarde dans la ligne courante */
      if (! bFound)
        for (nL = 0; nL < nJ; nL++)
          if (m[nI][nJ] == m[nI][nL])
          {
            bFound = 1;
            break;
          }

      if (! bFound)
        printf("%2d ", m[nI][nJ]);
      else
        printf("   ");
    }
    printf("\n");
  } 

  return 0;
}
0
Rejoignez-nous