Erreur en prog C
Résolu/Fermé
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
-
11 mars 2008 à 15:51
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 12 mars 2008 à 13:42
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 12 mars 2008 à 13:42
A voir également:
- Erreur en prog C
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 3005 france tv - Forum TV & Vidéo
4 réponses
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
161
11 mars 2008 à 15:56
11 mars 2008 à 15:56
Bonjour.
Ton test if (continuerPartie != 1 || 0) ne sert à rien. En effet le || renvoie vrai si l'une des expressions est vraie. Or quand tu fait || 0, 0 est vrai donc il passe pas au bon endroit.
Il vaut mieu mettre
if (continuerPartie != 1 || continuerPartie != 0)
Voilou en espérant que cela t'aura aidé.
Ton test if (continuerPartie != 1 || 0) ne sert à rien. En effet le || renvoie vrai si l'une des expressions est vraie. Or quand tu fait || 0, 0 est vrai donc il passe pas au bon endroit.
Il vaut mieu mettre
if (continuerPartie != 1 || continuerPartie != 0)
Voilou en espérant que cela t'aura aidé.
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
161
11 mars 2008 à 16:11
11 mars 2008 à 16:11
Youps la.....la tabulation manquante et c'est le drame dans la relecture.
Ben j'ai pu d'idées la désolé.
Ben j'ai pu d'idées la désolé.
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
224
11 mars 2008 à 16:12
11 mars 2008 à 16:12
Bon c'est pas grave on verra si quelq'un d'autre pourra m'aider ! Merci quand même !
Au fait pour la tabulation quand j'ai collé le code elle y était mais elle a disparu :-(
Au fait pour la tabulation quand j'ai collé le code elle y était mais elle a disparu :-(
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
11 mars 2008 à 16:25
11 mars 2008 à 16:25
essaye en mettant
puisque tu as déclaré continuerPartie comme un int et pas un long
et pour que les tabulations reste il faut que tu utilise les balises a coté du souligné en haut a gauche du cadre ou tu écris et tu mets ton code entre les deux
scanf("%d", continuerPartie);
puisque tu as déclaré continuerPartie comme un int et pas un long
et pour que les tabulations reste il faut que tu utilise les balises a coté du souligné en haut a gauche du cadre ou tu écris et tu mets ton code entre les deux
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
224
11 mars 2008 à 17:02
11 mars 2008 à 17:02
C'est toujours la même chose windows me met que main.exe a rencontré un prob et doit fermer.
Je reposte le code avec les tabulations :
Je reposte le code avec les tabulations :
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { const long MAX = 100, MIN = 1; long nombreEntre = 0, nombreMystere = 0, compteur = 0; int continuerPartie = 0, erreur = 1; srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN +1)) + MIN; do { do { printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); if (nombreMystere > nombreEntre) { printf("C'est plus !\n\n"); } else if (nombreMystere < nombreEntre) { printf("C'est moins !\n\n"); } else if (nombreEntre == nombreMystere) { printf("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n", compteur); } compteur++; } while (nombreMystere != nombreEntre); printf("Voulez-vous faire une nouvelle partie ? Tapez 1 pour Oui ou 0 pour Non"); scanf("%d", continuerPartie); do { if (continuerPartie != 1 || continuerPartie != 0) printf("Veuillez taper 1 ou 0 !"); else (erreur = 0); } while (erreur == 1); } while (continuerPartie == 1); printf("Au revoir !"); return 0; }
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
161
>
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
11 mars 2008 à 17:05
11 mars 2008 à 17:05
dans cette partie
if (continuerPartie != 1 || continuerPartie != 0)
printf("Veuillez taper 1 ou 0 !");
else (erreur = 0);
enlève le else, la syntaxe sera correcte.
Mais si c'est windows qui te sort une erreur c'est bizarre, ce n'est pas plutôt le compilo qui hurle??
Si oui, peut tu nous poster l'erreur de compil??
if (continuerPartie != 1 || continuerPartie != 0)
printf("Veuillez taper 1 ou 0 !");
else (erreur = 0);
enlève le else, la syntaxe sera correcte.
Mais si c'est windows qui te sort une erreur c'est bizarre, ce n'est pas plutôt le compilo qui hurle??
Si oui, peut tu nous poster l'erreur de compil??
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
224
>
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
11 mars 2008 à 17:32
11 mars 2008 à 17:32
Le else permet de faire stocker le nombre 0 dans la variable erreur, donc si l'utilisateur tape 1 ou 2, le else inscrira 0 dans la variable, donc le while ne fera pas de boucle donc continuera vers while (continuerPartie == 1);
Windows me dit d'envoyer un rapport d'erreur ! Quand je met "ne pas envoyer" le main.exe ne se ferme pas mais le jeu se termine.
PS: Pourrais-tu essayer de le compiler pour voir si ça fait pareil chez toi ?
Windows me dit d'envoyer un rapport d'erreur ! Quand je met "ne pas envoyer" le main.exe ne se ferme pas mais le jeu se termine.
PS: Pourrais-tu essayer de le compiler pour voir si ça fait pareil chez toi ?
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
11 mars 2008 à 17:39
11 mars 2008 à 17:39
je viens de voir que la syntaxe de ton scanf n'est pas correct il te manque le &
essaye avec
essaye avec
scanf("%d", &continuerPartie);
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
224
11 mars 2008 à 18:06
11 mars 2008 à 18:06
Des fois je me demande à quoi je pense ? ^^
Finalement j'ai viré tout ce qu'il y a avait pour dire veuillez tapez 0 ou 1 ... je tombais à chaque fois dans une boucle infinie de printf("Veuillez taper 0 ou 1 !") !!!!
Finalement ça donne ça et sa marche :
Finalement j'ai viré tout ce qu'il y a avait pour dire veuillez tapez 0 ou 1 ... je tombais à chaque fois dans une boucle infinie de printf("Veuillez taper 0 ou 1 !") !!!!
Finalement ça donne ça et sa marche :
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { const long MAX = 100, MIN = 1; long nombreEntre = 0, nombreMystere = 0, compteur = 0; int continuerPartie = 0, erreur = 1; srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN +1)) + MIN; do { do { printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); if (nombreMystere > nombreEntre) { printf("C'est plus !\n\n"); } else if (nombreMystere < nombreEntre) { printf("C'est moins !\n\n"); } else if (nombreEntre == nombreMystere) { printf("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n", compteur); } compteur++; } while (nombreMystere != nombreEntre); printf("Voulez-vous faire une nouvelle partie ? Tapez 1 pour Oui ou 0 pour Non"); scanf("%d", &continuerPartie); } while (continuerPartie == 1); printf("Au revoir !\n\n\n"); return 0; }
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
224
>
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
11 mars 2008 à 18:07
11 mars 2008 à 18:07
Et encore merci pour vos aides !
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
161
>
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
12 mars 2008 à 09:23
12 mars 2008 à 09:23
Mais de rien...parfois la solution est sous notre nez et on ne la trouve pas.
Bonne continuation a toi
Bonne continuation a toi
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
>
KunGu
Messages postés
1169
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
12 mars 2008 à 13:42
12 mars 2008 à 13:42
oui mais sans cette boucle si l'utilisateur ne rentre pas 1 ou 0 ton programme ne gere plus ce cas la...
tu aurait pu remplace le OU par un ET ça devrait éviter la boucle infini
tu aurait pu remplace le OU par un ET ça devrait éviter la boucle infini
11 mars 2008 à 16:00
11 mars 2008 à 16:02
while (continuerPartie == 1);
printf("Au revoir !");
ne serait -il pas mieux en
while (continuerPartie == 1)
printf("Au revoir !");
dans le doute en
while (continuerPartie == 1){
printf("Au revoir !");
}
??
11 mars 2008 à 16:06
En fait j'ai pas mis de boucle while, j'ai mis une boucle DO ... WHILE donc while est à la fin de la boucle est n'est pas fait pour prendre en compte le Au revoir !
11 mars 2008 à 19:32
while(......);
c'est faut il n'y a pas le ;
le juste :
while(...)
{
}
11 mars 2008 à 20:12
je t'invite a relire le post 4 c'est une boucle do...while pas une boucle while donc il y a bien un ";"