Tirage aleatoire de caractere en C

Résolu
thotoss -  
 thotoss -
Bonjour,
je souhaite realiser la fonction suivante, mais elle ne fonctionne pas :
j'ai définie
char sac[102]={'A','A','A','A','A','A','A','A','A','B','B','C','C','D','D','D','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','F','F','G','G','H','H','I','I','I','I','I','I','I','I','I','J','K','L','L','L','L','L','M','M','M','N','N','N','N','N','N','O','O','O','O','O','O','P','P','Q','R','R','R','R','R','R','S','S','S','S','S','S','T','T','T','T','T','T','U','U','U','U','U','U','V','V','W','X','Y','Z','$'};
et
char chevalet[7];

Ensuite j'ai fait une fonction qui devrait remplir aleatoirement chevalet en prenant dans sac, mais elle ne marche pas. Pourriez-vous me dire ou est mon erreur ?

void chevalet_init(char chevalet[7])
{
srand((unsigned)time(NULL));
char * ad;
ad=&chevalet[0];
int i;
for (i=0;i<7;i++)
{
*ad=rand()%sac[102];
ad++;
}
}

Merci !
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. WRIDANIOS Messages postés 24 Statut Membre 1
     
    SLT,
    Tu pe reessayer ton program en utilisan les code ascii decimale ....(ignorer l' initialisation du tableau des caractaires)....
    0
    1. thotoss
       
      euh....c'est a dire ? ne pas utiliser les caracteres ? il n'y a aucun moyen de faire un tirage aleatoire de caractere ?
      0
  2. thotoss
     
    personne ne peut me venir en aide svp ??!!
    0
  3. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    tu peux pas tirer des caracteres aleatoire comme ça...
    mais tu peux utiliser cette methode,
    tu tire un nombre entre 0 et 101 qui correspond aux differentes cases de sac et tu le met dans ton autre tableau
    int i;
    for (i=0;i<7;i++) 
    {
    nbr=rand()%102;
    chevalet[i]=sac[nbr];
    }
    comme ça dans chevalet tu auras les caracteres tiré au hasard de sac
    0
    1. thotoss
       
      Bonjour,
      alors voila mon prgramme, 2 fonctions qui initialise le chevalet et qui l'affiche :


      void chevalet_init(char a[7])
      {
      srand((unsigned)time(NULL));
      int i,nbr;
      for (i=0;i<7;i++)
      {
      nbr=rand()%102;
      chevalet[i]=sac[nbr];
      }
      }



      void chevalet_affiche(char a[7])
      {
      int i;
      printf("Voici votre chevalet : \n");
      for (i=0;i<7;i++)
      {
      printf("%s",a[i]);
      }
      printf("\n");
      }



      Mais quand je le lance, il m'affiche cela :

      Voici votre chevalet :
      <null><null><null><null><null><null><null>

      Ou est mon erreur ??
      merci
      0
    2. WRIDANIOS Messages postés 24 Statut Membre 1 > thotoss
       
      slt,
      est ce que je pe voir le main() de ton programme...merci
      0
    3. thotoss > thotoss
       
      personne ne peut maider ?svp
      0
    4. WRIDANIOS Messages postés 24 Statut Membre 1 > thotoss
       
      void chevalet_init(char a[7])
      {
      srand((unsigned)time(NULL));
      int i,nbr;
      for (i=0;i<7;i++)
      {
      nbr=rand()%102;
      chevalet[i]=sac[nbr]; //chevalet n'est pas declarer dans cette fonction
      //il faux metre a[i] a la place de chevalet[i]
      }
      }



      void chevalet_affiche(char a[7])
      {
      int i;
      printf("Voici votre chevalet : \n");
      for (i=0;i<7;i++)
      {
      printf("%s",a[i]);
      }
      printf("\n");
      }
      0
    5. WRIDANIOS Messages postés 24 Statut Membre 1 > WRIDANIOS Messages postés 24 Statut Membre
       
      le meme pour sac[nbr], n'est pas reconnus ds la fonction d'initialisation
      0