Fonction Rand pour démineur

pitidragon Messages postés 27 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 21 mai 2008 - 1 avril 2008 à 18:53
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 1 avril 2008 à 22:02
Bonjour à tous,

je dois programmer un démineur en langage C pour mes études et j'ai besoin d'aide. Je dois utiliser la fonction Rand pour générer mes bombes dans mon démineur mais je ne sais pas comment faire.

Quelqu'un pourrait m'aider ?

Je détaille un peu :

J'ai un tableau de 9x9 et je veux placer 10 mines dedans (représenté par le chiffre -1), mais je veux placer c'est mines aléatoirement dans le tableau.

Merci d'avance pour votre aide :)

6 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 avril 2008 à 19:32
Bonjour,

Voilà un exemple de réalisation :

#include <stdio.h>
#include <time.h>
void main()
{
   #define DIM_GRILLE 9
   int grille[DIM_GRILLE][DIM_GRILLE];
   int i,j,n;




   // --- Initialiser la grille
   for (i=0 ; i<DIM_GRILLE ; ++i)
      for (j=0 ; j<DIM_GRILLE ; ++j)
         grille[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 ; ++n)
   {
      // --- Couples (i,j) aléatoires et uniques
      do
      {
         i = rand() % DIM_GRILLE;
         j = rand() % DIM_GRILLE;
      } while (grille[i][j] != 0);
      grille[i][j] = -1;
   }




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


Ce qui donne :

 0 -1  0  0  0  0 -1  0  0
 0  0  0  0  0  0  0  0  0
 0  0 -1 -1  0 -1  0  0  0
 0  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0 -1  0
 0  0  0  0 -1  0  0  0  0
-1  0  0 -1  0  0  0  0  0
 0  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0  0



Jean-François
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 avril 2008 à 20:06
Post à consulter pour des précisions concernant rand() et srand() : http://www.cppfrance.com/infomsg_NOMBRE-SPEUDO-ALEATOIRE_1085331.aspx

Jean-François
0
pitidragon Messages postés 27 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 21 mai 2008
1 avril 2008 à 21:22
Merci pour ton aide :)

J'ai un soucis, une erreur de segmentation lorsqu'une de mes fonctions se lance mais je ne vois pas l'erreur.

Ma structure :

struct t_case{
    int valeur;
    bool affiche;
    };

typedef struct t_case Demineur[99][99];

Ma fonction qui bugge :

void initialisation(Demineur d, int nbl, int nbc)
{
    int i,j;

    for(i=0;i<=nbl;i++)
    {
        for(j=0;j<=nbc;i++)
        {
            d[i][j].valeur=0;
            d[i][j].affiche=0;
        }
    }
}

Mon petit main pour tester la fonction :

int main()
{
   
    int nbl=9, nbc=9;
    Demineur d;

    printf("********** DEMINEUR **********\n");
    initialisation(d, nbl, nbc);

    return(0);
}

Et donc quand je lance après mon printf j'ai une erreur de segmentation.

Help please
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 avril 2008 à 21:40
void initialisation(Demineur d, int nbl, int nbc)
{
    int i,j;

    for(i=0;i<nbl;i++) // et non <=
    {
        for(j=0;j<nbc;j++) // et non <=, j++ et non i++
        {
            d[i][j].valeur=0;
            d[i][j].affiche=false; // plus logique que 0 !
        }
    }
}






Jean-François
0

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

Posez votre question
pitidragon Messages postés 27 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 21 mai 2008
1 avril 2008 à 22:00
Je te remercie beaucoup, ça fonctionne.

Je me permettrais de reposer quelques question si je rencontre à nouveau des problèmes :)
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 avril 2008 à 22:02
Bonne chance et bon jeu !

Jean-François
0
Rejoignez-nous