Des erreurs...
Fermé
Koda94
Messages postés
7
Date d'inscription
samedi 9 mai 2015
Statut
Membre
Dernière intervention
25 mai 2015
-
25 mai 2015 à 10:55
Koda94 Messages postés 7 Date d'inscription samedi 9 mai 2015 Statut Membre Dernière intervention 25 mai 2015 - 25 mai 2015 à 15:03
Koda94 Messages postés 7 Date d'inscription samedi 9 mai 2015 Statut Membre Dernière intervention 25 mai 2015 - 25 mai 2015 à 15:03
A voir également:
- Des erreurs...
- Erreur dans le chargement des donnees vod - Forum Consommation & Internet
- Erreur impossible de récupérer la liste des mises à jour - Forum Freebox
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Le programme à télécharger ci-dessous contient des erreurs et n'est pas complet. corrigez-le et exécutez-le. quel mot de dix lettres est obtenu ? - Forum Pascal
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
25 mai 2015 à 13:56
25 mai 2015 à 13:56
'lut, tout simplement on ne peut pas définir de fonction dans une autre en C. il faut que tu les déplaces hors du main, et que tu les appelles dans ton switch.
Et il ne doit y avoir qu'un seul main d'ailleurs; je ne sais pas ce qui t'as mené à en mettre comme ça...
Et il ne doit y avoir qu'un seul main d'ailleurs; je ne sais pas ce qui t'as mené à en mettre comme ça...
Koda94
Messages postés
7
Date d'inscription
samedi 9 mai 2015
Statut
Membre
Dernière intervention
25 mai 2015
25 mai 2015 à 15:03
25 mai 2015 à 15:03
Je l'ai bidouillé un petit peu mais il me reste 2 erreurs : static declaration follows non-static declaration.
Pourquoi ?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "dictionnaire.h"
#define VRAI 1
#define FAUX 0
#define NBC 30
int affichageMenu(void)
{
int choixMenu;
printf("********Bonjour, Bienvenue dans Pendu 2.0 !********\n\n");
printf("Avant tout, souhaitez-vous faire une partie:\n\n");
printf("En solitaire, Tapez 1\n");
printf("A deux Joueurs, Tapez 2\n\n");
printf("\nVotre choix?\n\n");
scanf("%d", &choixMenu);
return choixMenu;
}
int main(void)
{
switch (affichageMenu())
{
case 1:
{
int nb_lettres;
char mot [NBC];
char masque [NBC];
char lettre ;
int nbcoups,j;
int trouve;
printf("Entrez un mot : ");
scanf("%s", mot);
nb_lettres = strlen(mot);
j = 0;
while (j < nb_lettres)
{
masque[j] = '*';
j++;
}
masque[j] = '\0';
system("cls");
printf("%s", masque);
trouve = FAUX;
nbcoups = 0;
while ((nbcoups < 10) && !trouve) {
printf ("\nProposez une lettre :");
scanf (" %c", &lettre);
j = 0;
while ((j < nb_lettres) && !trouve) {
if (mot[j] == lettre) {
masque[j]=lettre;
if (strchr(masque,'*') == NULL)
trouve = VRAI;
}
j++;
}
printf("%s", masque);
nbcoups++;
}
if (!trouve)
printf("\nVOUS AVEZ PERDU\n");
else
printf("\nVOUS AVEZ GAGNE\n");
return 0;
}
case 2:
{
int choisirMot(char *mot)
{
FILE* dictionnaire = NULL;
int nbMot = 0, numMotChoisi = 0, i = 0;
int nblettre = 0;
dictionnaire = fopen("dictionnaire.txt", "r");
if (dictionnaire == NULL)
{
printf("\nL'ouverture du dictionnaire a echouee");
return 0;
}
do
{
nblettre = fgetc(dictionnaire);
if (nblettre == '\n')
nbMot++;
} while(nblettre != EOF);
//On va créer ici la fonction qui choisit aléatoirement un mot
int nombreAleatoire(int nombreMax)
{
srand(time(NULL));
return (rand() % nombreMax);
}
numMotChoisi = nombreAleatoire(nbMot);
rewind(dictionnaire);
while (numMotChoisi > 0)
{
nblettre = fgetc(dictionnaire);
if (nblettre == '\n')
numMotChoisi--;
}
fgets(mot, 100, dictionnaire);
mot[strlen(mot) - 1] = '\0';
fclose(dictionnaire);
return 1;
}
// C'est ici que l'on va créer le "corps" du jeu
int gagner(int lettreTrouvee[], long longueurMot);
int rechercheLettre(char lettre, char motATrouver[], int lettreDecouverte[]);
char lireCaractere();
int second(int argc, char* argv[])
{
char lettre = 0;
char motATrouver[100] = {0};
int *lettreDecouverte = NULL;
long coupsRestants = 10;
long i = 0;
long longueurMot = 0;
printf("Bienvenue dans le Pendu !\n\n");
if (!choisirMot(motATrouver))
exit(0);
longueurMot = strlen(motATrouver);
lettreDecouverte = malloc(longueurMot * sizeof(int));
if (lettreDecouverte == NULL)
exit(0);
for (i = 0 ; i < longueurMot ; i++)
lettreDecouverte[i] = 0;
while (coupsRestants > 0 && !gagne(lettreDecouverte, longueurMot))
{
printf("\n\nIl vous reste %ld coups a jouer", coupsRestants);
printf("\nQuel est le mot secret ? ");
for (i = 0 ; i < longueurMot ; i++)
{
if (lettreDecouverte[i])
printf("%c", motATrouver[i]);
else
printf("*");
}
printf("\nProposez une lettre : ");
lettre = lireCaractere();
if (!rechercheLettre(lettre, motATrouver, lettreDecouverte))
{
coupsRestants--;
}
}
if (gagne(lettreDecouverte, longueurMot))
printf("\n\nGagne ! Le mot secret etait bien : %s", motATrouver);
else
printf("\n\nPerdu ! Le mot secret etait : %s", motATrouver);
free(lettreDecouverte);
return 0;
}
char lireCaractere()
{
char caractere = 0;
caractere = getchar();
caractere = toupper(caractere);
while (getchar() != '\n') ;
return caractere;
}
int gagne(int lettreDecouverte[], long longueurMot)
{
long i = 0;
int joueurGagne = 1;
for (i = 0 ; i < longueurMot ; i++)
{
if (lettreDecouverte[i] == 0)
joueurGagne = 0;
}
return joueurGagne;
}
int rechercheLettre(char lettre, char motATrouver[], int lettreDecouverte[])
{
long i = 0;
int bonneLettre = 0;
for (i = 0 ; motATrouver[i] != '\0' ; i++)
{
if (lettre == motATrouver[i])
{
bonneLettre = 1;
lettreDecouverte[i] = 1;
}
}
return bonneLettre;
}
}
}
}
Pourquoi ?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "dictionnaire.h"
#define VRAI 1
#define FAUX 0
#define NBC 30
int affichageMenu(void)
{
int choixMenu;
printf("********Bonjour, Bienvenue dans Pendu 2.0 !********\n\n");
printf("Avant tout, souhaitez-vous faire une partie:\n\n");
printf("En solitaire, Tapez 1\n");
printf("A deux Joueurs, Tapez 2\n\n");
printf("\nVotre choix?\n\n");
scanf("%d", &choixMenu);
return choixMenu;
}
int main(void)
{
switch (affichageMenu())
{
case 1:
{
int nb_lettres;
char mot [NBC];
char masque [NBC];
char lettre ;
int nbcoups,j;
int trouve;
printf("Entrez un mot : ");
scanf("%s", mot);
nb_lettres = strlen(mot);
j = 0;
while (j < nb_lettres)
{
masque[j] = '*';
j++;
}
masque[j] = '\0';
system("cls");
printf("%s", masque);
trouve = FAUX;
nbcoups = 0;
while ((nbcoups < 10) && !trouve) {
printf ("\nProposez une lettre :");
scanf (" %c", &lettre);
j = 0;
while ((j < nb_lettres) && !trouve) {
if (mot[j] == lettre) {
masque[j]=lettre;
if (strchr(masque,'*') == NULL)
trouve = VRAI;
}
j++;
}
printf("%s", masque);
nbcoups++;
}
if (!trouve)
printf("\nVOUS AVEZ PERDU\n");
else
printf("\nVOUS AVEZ GAGNE\n");
return 0;
}
case 2:
{
int choisirMot(char *mot)
{
FILE* dictionnaire = NULL;
int nbMot = 0, numMotChoisi = 0, i = 0;
int nblettre = 0;
dictionnaire = fopen("dictionnaire.txt", "r");
if (dictionnaire == NULL)
{
printf("\nL'ouverture du dictionnaire a echouee");
return 0;
}
do
{
nblettre = fgetc(dictionnaire);
if (nblettre == '\n')
nbMot++;
} while(nblettre != EOF);
//On va créer ici la fonction qui choisit aléatoirement un mot
int nombreAleatoire(int nombreMax)
{
srand(time(NULL));
return (rand() % nombreMax);
}
numMotChoisi = nombreAleatoire(nbMot);
rewind(dictionnaire);
while (numMotChoisi > 0)
{
nblettre = fgetc(dictionnaire);
if (nblettre == '\n')
numMotChoisi--;
}
fgets(mot, 100, dictionnaire);
mot[strlen(mot) - 1] = '\0';
fclose(dictionnaire);
return 1;
}
// C'est ici que l'on va créer le "corps" du jeu
int gagner(int lettreTrouvee[], long longueurMot);
int rechercheLettre(char lettre, char motATrouver[], int lettreDecouverte[]);
char lireCaractere();
int second(int argc, char* argv[])
{
char lettre = 0;
char motATrouver[100] = {0};
int *lettreDecouverte = NULL;
long coupsRestants = 10;
long i = 0;
long longueurMot = 0;
printf("Bienvenue dans le Pendu !\n\n");
if (!choisirMot(motATrouver))
exit(0);
longueurMot = strlen(motATrouver);
lettreDecouverte = malloc(longueurMot * sizeof(int));
if (lettreDecouverte == NULL)
exit(0);
for (i = 0 ; i < longueurMot ; i++)
lettreDecouverte[i] = 0;
while (coupsRestants > 0 && !gagne(lettreDecouverte, longueurMot))
{
printf("\n\nIl vous reste %ld coups a jouer", coupsRestants);
printf("\nQuel est le mot secret ? ");
for (i = 0 ; i < longueurMot ; i++)
{
if (lettreDecouverte[i])
printf("%c", motATrouver[i]);
else
printf("*");
}
printf("\nProposez une lettre : ");
lettre = lireCaractere();
if (!rechercheLettre(lettre, motATrouver, lettreDecouverte))
{
coupsRestants--;
}
}
if (gagne(lettreDecouverte, longueurMot))
printf("\n\nGagne ! Le mot secret etait bien : %s", motATrouver);
else
printf("\n\nPerdu ! Le mot secret etait : %s", motATrouver);
free(lettreDecouverte);
return 0;
}
char lireCaractere()
{
char caractere = 0;
caractere = getchar();
caractere = toupper(caractere);
while (getchar() != '\n') ;
return caractere;
}
int gagne(int lettreDecouverte[], long longueurMot)
{
long i = 0;
int joueurGagne = 1;
for (i = 0 ; i < longueurMot ; i++)
{
if (lettreDecouverte[i] == 0)
joueurGagne = 0;
}
return joueurGagne;
}
int rechercheLettre(char lettre, char motATrouver[], int lettreDecouverte[])
{
long i = 0;
int bonneLettre = 0;
for (i = 0 ; motATrouver[i] != '\0' ; i++)
{
if (lettre == motATrouver[i])
{
bonneLettre = 1;
lettreDecouverte[i] = 1;
}
}
return bonneLettre;
}
}
}
}
25 mai 2015 à 14:38
Merci pour ta réponse. J'ai compris ce que tu m'as dit. Mais faut-il que je les définissent avant le menu ? Et surtout comment ?