Initialiser un tableau a deux dimensions a données aléatoire

Résolu
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008
-
Salut tous le monde.
j'ai un petit problème avec mon programme. Je voudrais initialiser un tableau a deux dimension mais avec des données précise.C'est a dire dans un tableau[4][4] mettre 4 chiffres ou caractères par exemple. En fouinant un peu sur le site et d'autre j'ai fais un petit truc qui fonctionne d'ailleurs mais pas comme je le souhaite.certes ça affiche des x aléatoires mais leurs nombres est aussi aléatoire.
je vous demande votre aide merci
voici mon programme:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{  
      int i,j,col,h,choix,ligne;
      char dame[10][10]={'x','x','x','x','x','x','x','x'};
      g=0;
      srand(time(NULL));
      printf("\n");
     printf("  | A   B   C   D   E   F   I   G   K   L\n");
      printf("___________________________________________\n");
      for (i=0;i<10;i++)
      {
          printf("\n");
          printf("%d |",g);
          g++;
          for(j=0;j<10;j++)
          {
                printf(" %c |",dame[rand()%i][rand()%j] );
          }
      }
      printf("\n");
      system ("pause");
      return 0;
}

10 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut,
Tu peux faire quelque chose comme ca;

for(i=0;i<4;i++)
   for(j=0;j<4;j++)
      Tab[i][j]=0;      //initialisation de ton tab a 0

Nb=0;
do
{
   i=rand()%4;
   j=rand()%4;
   if(Tab[i][j]==0){      //si la case est vide
     Tab[i][j]=1;
     Nb++;
  }
}
while(Nb<4)

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Ben ca c'est totallement normal, vu que je n,es pas initialiser le rand.

Le rand sans initialisation sortira toujours la meme sequence de nombre.
Faut mettre un srand(time(NULL)). La, le rand est initialiser en fonction du temps donc le rand te generera une chaine differente a chaque execution.

A+

Mon site internet : http://pistol.petesampras.free.fr
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
100 char c'est 25 DWORD

DWORD *pdw = (DWORD*) Tab;
DWORD n = 25;
do {
  *pdw++ = 0;
} while(--n);

ciao...
BruNews, MVP VC++
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Salut,
BruNews -> rien a redire pour l'initialisation
lil_adriano -> tu initialises mal ton tableau , tu utilises un tableau a 1 dimension pour initialiser un tableau a 2 dimension. Essaies plutot , si tu veux voir tes 'x'
char tab[4][4] = {{'x','x','x','x'},{'x','x','x','x'},{'x','x','x','x'},{'x','x','x','x'}};

je suis heureux de faire partie d'une grande famille ...!
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

Salut,
nickydaquick  je ne veux pas avoir tout mon tableau avec des x mais avec un nombre fixé au préalable.

BruNews, certes ton programme est correcte mais c'est dans le but d'un projet  que je cherche comment initialiser un tableau avec des données aléatoires, et comme je connais pas DWORD mais bon je vais faire quelque recherche pour bien l'utiliser.

Pistol_pete ton prob fonctionne mais il y a un petit probleme le même tableau réapparait.

mais merci pour votre aide et si vous avez d'autre tuyau n'hésitez pas!
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

Pistol_pete dsl je voulais dire ton programme fonctionne ...
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Salut,
remplace alors les 'x' par ton nombre fixe au prealable
je suis heureux de faire partie d'une grande famille ...!
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut

Peux tu expliquer ce que tu veux dire lorsque tu parles que mon tableau "réapparait"?

Mon site internet : http://pistol.petesampras.free.fr
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

Slt Pistol_pete ce que je veux dire part "le tableau réapparait " c'est ke c'est le meme tableau qui s'affiche. c'est a dire quand je compile le programe j'ai touve tous le temps le meme resultat : 0000100110100000.
Voici le programme que tu m'as envoyé

#include <stdio.h>
#include <stdlib.h>
main()
{ int i,j,Tab[4][4],Nb;
for(i=0;i<4;i++)
   for(j=0;j<4;j++)
      Tab[i][j]=0;      //initialisation de ton tab a 0
Nb=0;
do
{
   i=rand()%4;
   j=rand()%4;
   if(Tab[i][j]==0){      //si la case est vide
     Tab[i][j]=1;
     Nb++;
  }
}while(Nb<4);
for(i=0;i<4;i++)
  { printf("\n");for(j=0;j<4;j++)
      {printf("%d",Tab[i][j]);}}
      system ("pause");
      return 0;
}
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

merci pistol_pistol pour ton aide ca fonctionne correctement. jamais oublier de mettre srand(time(NULL)). merci encore!!