Remplir aléatoirement une matrice binaire dynamique

amani20081984 Messages postés 4 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 19 août 2008 - 19 août 2008 à 11:34
amani20081984 Messages postés 4 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 19 août 2008 - 19 août 2008 à 21:08
bonjour,
je veux bien remplir une matrice de structure dynamique d'une manière aléatoire par des valeurs 0 et 1 en utilisant la fonction rand(),
voicii un code utilisant cette fonction mais dans une matrice de structure statique.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 

int main()
{
  #define DIM_GRILLE 100
   int m[DIM_GRILLE][DIM_GRILLE];
   int i,j,n,cpt;

   // --- Initialiser la grille
  
       
   for (i=0 ; i<DIM_GRILLE ; ++i)
      for (j=0 ; j<DIM_GRILLE ; ++j)
         m[i][j] = 0;

   // --- Initialiser le générateur de nombres aléatoires
   srand((unsigned int)time(NULL));

   // --- Mines aléatoires
   for (n=0 ; n<DIM_GRILLE*DIM_GRILLE-100 ; ++n)
   {
      // --- Couples (i,j) aléatoires et uniques
      do
      {
         i = rand() % DIM_GRILLE;
         j = rand() % DIM_GRILLE;
      } while (m[i][j] != 0);
      m[i][j] = 1;
   }

   // --- Visu de la grille
   for (i=0 ; i<DIM_GRILLE ; ++i)
   {
      for (j=0 ; j<DIM_GRILLE ; ++j)
     
      printf("%2d ",m[i][j]);
      printf("\n");
   }
   printf("\n");
   cpt=0;
   for (i=0 ; i<DIM_GRILLE ; ++i)
   {
      for (j=0 ; j<DIM_GRILLE ; ++j)
      if(m[i][j]==1)
      cpt++;}
      printf("%d",cpt);

   system("pause");
   return 0;
}
MERCI D'AVANCE.

4 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
19 août 2008 à 12:17
Bonjour
C'est quasi la même chose sauf que tu remplaces :
  #define DIM_GRILLE 100
   int m[DIM_GRILLE][DIM_GRILLE];
par :
int dim_grille = 100;
int ** m = (int **) malloc(sizeof(int *) * dim_grille):
for(int i = 0; i < dim_grille; i++) {
     m[i] = (int *) malloc(sizeof(int) * dim_grille);
}
0
Warium Messages postés 36 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 27 janvier 2010
19 août 2008 à 13:38
tu peux aussi reserver en utilisant la fonction new comme suit

  #define DIM_GRILLE 100
  
int ** m = new int* [Dim_grille]
for(int i = 0; i < Dim_grille; i++) 
     (*m)[i] = new int  [Dim_grille] ;
puis tu initialise le générateur aléatoire. tu remplis la matrice et fin

Conseil : ecris une fonction qui resrve de l'espace dynamiquement a part puis une autre
 procedure qui remplit une matrice aleatoirement et enfin tu appeles les deux fonctions precedente successivement

By Warium.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 août 2008 à 15:47
0
amani20081984 Messages postés 4 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 19 août 2008
19 août 2008 à 21:08
j'ai trouvé une autre manière d'allocation dynamique
m=(int *) malloc(sizeof(int)*dim_grille*dim_grille);
et remplacer chaque m[i][j] par m[i*dim_grille+j]
merci à tous
à +
 
0
Rejoignez-nous