Bonjour,
Voici mon programme ci dessous :
Ce qui me dérange est la chose suivante :
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #define taille_mot_secret 7 int main(void) { char mot_secret[] = "Bonjour"; char mot_rentrer_par_utilisateur[taille_mot_secret+1]; //+1 => reservation '\0' (carac fin chaine) int nombre_vie = 10; char lettre_utilisateur; // Initialisation du mot rentrer par l'utilisateur // ================================================================================== for (int i = 0; i < taille_mot_secret; i++) mot_rentrer_par_utilisateur[i] = '_'; mot_rentrer_par_utilisateur[taille_mot_secret] = '\0'; // ================================================================================== do { // Récupération saisie utilisateur // ========================================================================== printf("Entrer une lettre majuscule ou minuscule ?\n"); scanf("%c", &lettre_utilisateur); scanf("%*c"); // ========================================================================== // Vérification de la saisie utilisateur // ========================================================================== bool presence_lettre = false; for (int i = 0; i < taille_mot_secret; i++) { if (mot_secret[i] == lettre_utilisateur) { presence_lettre = true; mot_rentrer_par_utilisateur[i] = lettre_utilisateur; } } // ========================================================================== // Affichage en fonction de la présence de la lettre // ========================================================================== if (presence_lettre) printf("Votre lettre : %c est bien présente dans le mot : \"%s\"\n", lettre_utilisateur, mot_rentrer_par_utilisateur); else { nombre_vie--; printf("Votre lettre n'est pas présente, il vous reste %d vie\n", nombre_vie); } // ========================================================================== // Test de la victoire // ========================================================================== if (strcmp(mot_secret, mot_rentrer_par_utilisateur) == 0) { printf("vous avez trouvé le mot : \"%s\"", mot_secret); break; } // ========================================================================== } while (nombre_vie > 0); // Affichage lorsque plus de vie // ========================================================================== if (nombre_vie == 0) printf("Vous n'avez pas trouvez le mot : \"%s\"", mot_secret); // ========================================================================== return 0; }
Je suis obligé de passé par une directive de préprocesseur, c'est à dire, un #define taille_mot_secret 7 pour définir la taille du mot secret dans le tableau.
J'ai essayé de la faire dynamiquement, c'est à dire, de faire la chose suivante :
- supprimer le #define taille_mot_secret 7
- taille_mot_secret = strlen(mot_secret)
- mot_rentrer_par_utilisateur[taille_mot_secret + 1]
Ceci ne fonctionne pas car si j'ai bien compris car la taille d'un tableau ne peut être allouer que avant la compilation. Vous confirmez ?
Je pense qu'il faut passer par l'allocation dynamique de mémoire, mais je n'en suis pas encore la, dans mon apprentissage du langage C.
Sinon, connaissez vous une solution plus simple ?
Merci pour votre aide.







Répondre avec citation


)


. En revanche j'ai eu un "-1" sans savoir ce que j'ai dit qui ne va pas. Bof, probablement un de ces aigris du forum que j'ai taclés en leur temps pour leurs absurdités et qui reviennent de temps en temps montrer par leur mesquinerie qu'ils ont systématiquement lamentablement échoué dans leur argumentation...


Partager