Tirage aleatoire de caractere en C

Résolu
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. SLT,
    Tu pe reessayer ton program en utilisan les code ascii decimale ....(ignorer l' initialisation du tableau des caractaires)....
    1. euh....c'est a dire ? ne pas utiliser les caracteres ? il n'y a aucun moyen de faire un tirage aleatoire de caractere ?
  2. 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
    1. 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
    2. @thotossslt,
      est ce que je pe voir le main() de ton programme...merci
    3. @thotossvoid 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");
      }
    4. @WRIDANIOSle meme pour sac[nbr], n'est pas reconnus ds la fonction d'initialisation