Fonction aleatoire

Fermé
vivelamayo Messages postés 5 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009 - 13 déc. 2009 à 16:30
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 13 déc. 2009 à 19:21
Bonjour,

je cherche a faire un jeu de mastermind en c++ en solo, pour cela je cherche une fonction aléatoire qui me renvoie des caractères et non des chiffres.

si vous savez svp aidez-moi !!^^

6 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 déc. 2009 à 16:53
Une lettre, c-à-d un caractère (un char) en C++ c'est juste une variable numérique (oui oui, un nombre) qui représente un code ASCII plus ou moins.

tu vas voir la table ascii en lien juste à la ligne au dessus. ensuite tu dois simplement faire une fonction qui utilise rand() pour créer un nombre aléatoire entre tant et tant (Selon si tu veux utiliser les majuscules aussi, certaines lettres, etc...).

un truc du genre :

//fonction qui donne un caractère au hasard entre A, B, C et D :

//quelque part dans ton code il serait bien d'avoir :
const char CODE_A = 'A'; // le code ASCII pour 'A'

char caractereAleatoire() {
return (char) (rand() % 4) + CODE_A;
// ou return (char) ( (rand%4) + 65);
}

pour être honnête j'ai la flemme de tester là maintenant, je ne suis pas tout à fait sûr de mon coup, mais essaye et tu verras bien si ça marche ;)
0
vivelamayo Messages postés 5 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009
13 déc. 2009 à 16:58
ah oui la table ascii !! ^^ je n'y avait pas pensé merci beaucoup =)
0
vivelamayo Messages postés 5 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009
13 déc. 2009 à 17:00
mais est-il possible de générer une chaine de seulement 4 caractères ?
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 déc. 2009 à 17:07
pour un chaine c'est autre chose. mais on peut récupérer le principe :
tu n'as qu'à créer un tableau de char, rajouter le caractère nul ('\ 0' ou la valeur numérique 0) à la fin, et tu as une chaine de caractères style C ;) convertible en String avec un simple "String chaine =ton tableau de char" ou "String chaine = new String(ton tableau de char)" je ne sais plus.
0
vivelamayo Messages postés 5 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009
13 déc. 2009 à 17:57
merci
0

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

Posez votre question
vivelamayo Messages postés 5 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009
13 déc. 2009 à 18:36
Pacorabanix, je ne cherche pas tout a fait ça mais merci.

Je voudrais que l'ordi me une série aléatoire de 4 lettres contenant les lettres "R, V, B, J, N, O"
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 déc. 2009 à 19:21
Ok. la différence est plutôt grande si le programme peut répéter les mêmes lettres ou non.

Le plus simple, c'est s'il peut les répéter :

tu mets des caractères dans un tableau de char.
Tu as un tableau pour les caractères aléatoires que tu vas choisir
Tu tires un nombre n au hasard entre 0 et 5, et tu places le caractère correspondant ( leTableauDeBase[n] ) dans la première case de ton tableau de caractère aléatoire. Tu répètes ça pour les 3 cases de ton tableau de caractères aléatoires.

Sinon, si tu n'as pas le droit d'utiliser plusieurs fois le même caractère, il faut ruser et faire en sorte de par exemple:

* soit retirer si le caractère est déjà utilisé, et comme tu peux retomber dessus encore, il faut faudra peut-être retirer beaucoup de fois,

* soit de supprimer le caractère déjà utilisé du tableau initial, ce qui implique de recréer le tableau à chaque fois et aussi de faire attention à ne pas tirer un nombre aléatoire entre 0 et 5 pour la deuxième fois, mais entre 0 et 4. Puis entre 0 et 3, etc.. ça demande quelques efforts, et ce serait très grandement facilité si tu as quelques notions des conteneurs standard de la STL (comme vector<> ou list<>).

il y a diverses autres possibilités bien sûr, et il y a surement des bibliothèques de fonctions deja faites pour ça mais personnellement je ne les connais pas.
0