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 !
A voir également:

3 réponses

WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   1
 
SLT,
Tu pe reessayer ton program en utilisan les code ascii decimale ....(ignorer l' initialisation du tableau des caractaires)....
0
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
thotoss
 
personne ne peut me venir en aide svp ??!!
0
mype Messages postés 2435 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
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
WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   1 > thotoss
 
slt,
est ce que je pe voir le main() de ton programme...merci
0
thotoss > thotoss
 
personne ne peut maider ?svp
0
WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   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
WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   1 > WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
le meme pour sac[nbr], n'est pas reconnus ds la fonction d'initialisation
0