Bonsoir,
J'utilise à nouveau un algo pour générer des caractères aléatoires (quatre) bornés (parmi RGBYMC et .). La fonction générateur s'appelle "char tirer_couleur()" et retourne un caractère.
J'ai créé une fonction qui appelle "char tirer_couleur()" et qui collectionne lesdits caractères. Jusque là, tout se passe bien. Ensuite j'ai créé une variable string qui contient les 4 caractères concaténés. Ensuite je retourne la variable string que je peux afficher.
Le hic, c'est que chaque tirage comporte le caractère "B", comme première caractère de la série. J'ai utilisé ailleurs, le même générateur et je n'ai pas eu ce même problème...
Je sèche... Tout d'abord que pensez-vous du code? et dans un deuxième temps auriez-vous une piste à suivre pour le caractère "B" ?
Merci et bon week-end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 #include <iostream> #include <ctime> // pour les nombres aléatoires #include <random> #include <cstring> // strlen using namespace std; // ====================================================================== // Couleur au hasard std::uniform_int_distribution<int> distribution; std::default_random_engine generateur(time(NULL)); /* NOT using std::random_device since not * all compilers seems to support it :-( */ char tirer_couleur() { static const char* const couleurs = ".RGBCYM"; static const int nb = strlen(couleurs) - 1; return couleurs[distribution(generateur, std::uniform_int_distribution<int>::param_type {0, nb})]; } string tirer_memoriser_combinaison() { char rand1(' '),rand2 (' '),rand3(' '),rand4(' ') ; rand1 = tirer_couleur(); rand2 = tirer_couleur(); rand3 = tirer_couleur(); rand4 = tirer_couleur(); string result; result += rand1; result += rand2; result += rand3; result += rand4; return result; } // ====================================================================== void jouer() { /*Tirer et mémoriser les couleurss choisies par l'ordinateur*/ string combinaison = tirer_memoriser_combinaison(); // appel de la fonction tirer et mémoriser cout <<combinaison<<endl; } int main() { jouer(); return 0; }
Partager