Remplir aléatoirement une matrice binaire dynamique

Signaler
Messages postés
4
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
19 août 2008
-
Messages postés
4
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
19 août 2008
-
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.
A voir également:

4 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
26
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);
}
Messages postés
36
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
27 janvier 2010

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.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Messages postés
4
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
19 août 2008

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
à +