Tirage aleatoire de caractere en C

Résolu/Fermé
thotoss - 7 avril 2008 à 13:50
 thotoss - 8 avril 2008 à 13:20
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 vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 1
7 avril 2008 à 14:03
SLT,
Tu pe reessayer ton program en utilisan les code ascii decimale ....(ignorer l' initialisation du tableau des caractaires)....
0
euh....c'est a dire ? ne pas utiliser les caracteres ? il n'y a aucun moyen de faire un tirage aleatoire de caractere ?
0
personne ne peut me venir en aide svp ??!!
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 avril 2008 à 18:35
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
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 vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 1 > thotoss
8 avril 2008 à 11:48
slt,
est ce que je pe voir le main() de ton programme...merci
0
thotoss > thotoss
8 avril 2008 à 11:49
personne ne peut maider ?svp
0
WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 1 > thotoss
8 avril 2008 à 11:56
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 vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 1 > WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
8 avril 2008 à 12:03
le meme pour sac[nbr], n'est pas reconnus ds la fonction d'initialisation
0