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

Résolu
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008 - 18 janv. 2008 à 03:28
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008 - 21 janv. 2008 à 23:44
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;
}
A voir également:

10 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
18 janv. 2008 à 09:30
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
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
21 janv. 2008 à 13:17
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
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 janv. 2008 à 09:40
100 char c'est 25 DWORD

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

ciao...
BruNews, MVP VC++
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
18 janv. 2008 à 15:28
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 ...!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008
19 janv. 2008 à 01:06
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!
0
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008
19 janv. 2008 à 01:14
Pistol_pete dsl je voulais dire ton programme fonctionne ...
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
19 janv. 2008 à 03:12
Salut,
remplace alors les 'x' par ton nombre fixe au prealable
je suis heureux de faire partie d'une grande famille ...!
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
20 janv. 2008 à 22:16
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
0
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008
20 janv. 2008 à 23:36
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;
}
0
lil_adriano Messages postés 42 Date d'inscription vendredi 26 janvier 2007 Statut Membre Dernière intervention 16 juin 2008
21 janv. 2008 à 23:44
merci pistol_pistol pour ton aide ca fonctionne correctement. jamais oublier de mettre srand(time(NULL)). merci encore!!
0
Rejoignez-nous