Pouvez m'aider à faire le programme d'un jeu de pendu?
Résolu/Fermé
LisaRita
-
Modifié le 4 mai 2022 à 07:13
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 3 mai 2022 à 20:28
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 3 mai 2022 à 20:28
A voir également:
- Jeu du pendu python
- Jeu du pendu - Télécharger - Vie quotidienne
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Citizen code python avis - Accueil - Outils
2 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 1 mai 2022 à 18:13
Modifié le 1 mai 2022 à 18:13
Salut,
1.
En C, tu n'as pas le droit de mettre des lettres accentuées comme noms de variables. Un très grand nombre des erreurs concernent cela.
Renomme "motàdeviner" en "motadeviner" et "chaineàdeviner" en "chaineadeviner" partout.
2.
Une fois que tu as fait cela, tu as les erreurs et avertissements suivants qui s'affichent :
Les avertissements de gcc dans une version raisonnablement récente te donnent ces indications. Fais le.
3.
Une fois que tu as corrigé il te reste :
4.
Le premier message est un avertissement, qui te signale qu'en ligne 52, tu compares un entier à un type size_t, :
En effet, strlen() renvoie un type size_t qui est un type entier non signé alors que i est déclarée au début de ton main() comme étant un int, qui est un type signé. De plus, size_t peut représenter des valeurs entières (positives) bien que plus grandes de int.
Cet avertissement n'empêchera pas le programme de fonctionner tant que des valeurs tenant dans un int résulteront de strlen(), mais tu devrais écrire :
et supprimer la déclaration de ta variable
5.
La dernière erreur n'est pas une erreur de compilation, mais de liaison.
Tu définis en ligne 6 le prototype d'une fonction lirechaine(), que tu appelles en ligne 34, mais son implémentation n'est faite nulle part dans les éléments compilés.
Tu dois donc implémenter cette fonction.
Je pense aussi que la fonction est mal nommée car elle retourne un char et pas une chaine.
Pour le reste, je n'ai pas regardé la logique du code et s'il s'exécute correctement :-)
Dal
P.S. en fait, je vois qu'il y a une fonction
P.S. n°2 : je pense que ton mot à trouver devrait être tout en majuscules.
1.
En C, tu n'as pas le droit de mettre des lettres accentuées comme noms de variables. Un très grand nombre des erreurs concernent cela.
Renomme "motàdeviner" en "motadeviner" et "chaineàdeviner" en "chaineadeviner" partout.
2.
Une fois que tu as fait cela, tu as les erreurs et avertissements suivants qui s'affichent :
$ gcc -Wall -Wextra 37584157.c
37584157.c: In function ‘main’:
37584157.c:14:18: error: ‘NUL’ undeclared (first use in this function); did you mean ‘NULL’?
char *pointeur = NUL;
^~~
NULL
37584157.c:14:18: note: each undeclared identifier is reported only once for each function it appears in
37584157.c:27:27: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration]
while((nbrCoups != 0) && (strcmp(chaineadeviner,motadeviner)!= 0 ) )
^~~~~~
37584157.c:34:12: warning: implicit declaration of function ‘strchr’ [-Wimplicit-function-declaration]
pointeur = strchr(motadeviner,lettre);
^~~~~~
37584157.c:34:12: warning: incompatible implicit declaration of built-in function ‘strchr’
37584157.c:34:12: note: include ‘<string.h>’ or provide a declaration of ‘strchr’
37584157.c:2:1:
+#include <string.h>
37584157.c:34:12:
pointeur = strchr(motadeviner,lettre);
^~~~~~
37584157.c:50:13: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
for(i=0 ; i<strlen(motadeviner) ; i++)
^~~~~~
37584157.c:50:13: warning: incompatible implicit declaration of built-in function ‘strlen’
37584157.c:50:13: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
37584157.c:50:12: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
for(i=0 ; i<strlen(motadeviner) ; i++)
^
37584157.c: In function ‘lirechaie’:
37584157.c:93:13: warning: implicit declaration of function ‘toupper’ [-Wimplicit-function-declaration]
chaine= toupper(chaine);
^~~~~~~
- le premier message est un message d'erreur. Tu as oublié un L à la fin de NULL, que le message te suggère d'ajouter
- les autres messages t'indiquent que tu as oublié de faire
#include <string.h>
qui te permet d'accéder aux fonctions de la bibliothèque standard mentionnées dans les avertissements (strcmp(), strchr(), strlen()) et#include <ctype.h>
(pour toupper())
Les avertissements de gcc dans une version raisonnablement récente te donnent ces indications. Fais le.
3.
Une fois que tu as corrigé il te reste :
$ gcc -Wall -Wextra 37584157.c
37584157.c: In function ‘main’:
37584157.c:52:12: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for(i=0 ; i<strlen(motadeviner) ; i++)
^
/usr/bin/ld: /tmp/ccpELaFD.o: in function `main':
37584157.c:(.text+0xa3): undefined reference to `lirechaine'
collect2: error: ld returned 1 exit status
4.
Le premier message est un avertissement, qui te signale qu'en ligne 52, tu compares un entier à un type size_t, :
for(i=0 ; i<strlen(motadeviner) ; i++)
En effet, strlen() renvoie un type size_t qui est un type entier non signé alors que i est déclarée au début de ton main() comme étant un int, qui est un type signé. De plus, size_t peut représenter des valeurs entières (positives) bien que plus grandes de int.
Cet avertissement n'empêchera pas le programme de fonctionner tant que des valeurs tenant dans un int résulteront de strlen(), mais tu devrais écrire :
for(size_t i=0 ; i<strlen(motadeviner) ; i++)
et supprimer la déclaration de ta variable
int i;au début de ton main() pour éliminer cette incohérence des types.
5.
La dernière erreur n'est pas une erreur de compilation, mais de liaison.
Tu définis en ligne 6 le prototype d'une fonction lirechaine(), que tu appelles en ligne 34, mais son implémentation n'est faite nulle part dans les éléments compilés.
Tu dois donc implémenter cette fonction.
Je pense aussi que la fonction est mal nommée car elle retourne un char et pas une chaine.
Pour le reste, je n'ai pas regardé la logique du code et s'il s'exécute correctement :-)
Dal
P.S. en fait, je vois qu'il y a une fonction
char lirechaie()implémentée dans le code. Il manque une lettre pour que le compilateur sache de quoi tu parles.
P.S. n°2 : je pense que ton mot à trouver devrait être tout en majuscules.
Salut,
Je te remercie énormément pour ton aide cela m'a beaucoup aider.
Rita
Je te remercie énormément pour ton aide cela m'a beaucoup aider.
Rita
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
3 mai 2022 à 20:28
3 mai 2022 à 20:28
:-)