Problème de fin de boucle
Résolu
Thedots
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
chris79 Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
chris79 Messages postés 97 Date d'inscription Statut Membre Dernière intervention -
Bonjour, il n'y a pas longtemps j'ai commencé à apprendre à programmer en C, et j'ai donc essayé un programme, mais je rencontre un problème, j'essaie de terminer mon programme en donnant une valeur à ma variable, mais j'ai l'impression de faire une erreur, et du coup j'aimerais vous poser la question.
L'erreur je pense, se trouve vers la fin. Voici mon code source :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int reset = 1;
do
{
int play_again = 1, difficult_level = 0;
printf("Quel niveau de difficulte voulez-vous ?\n");
printf("1. De 1 a 100 ?\n");
printf("2. De 1 a 1 000? \n");
printf("3. de 1 a 10 000?\n");
scanf("%d", &difficult_level);
do
{
int nombreMystere = 0, nombreEntree = 0, nombre_de_coup = 1, nombre_maximum = 1;
const int MIN = 1;
if (difficult_level != 1 && difficult_level != 2 && difficult_level != 3)
{
printf("Veuillez entrer 1, 2 ou 3 pour commencer a jouer.\n");
do
{
printf("Quel niveau de difficulte voulez-vous ?\n");
printf("1. De 1 a 100 ?\n");
printf("2. De 1 a 1 000? \n");
printf("3. de 1 a 10 000?\n");
scanf("%d", &difficult_level);
}while (difficult_level != 1 && difficult_level != 2 && difficult_level != 3);
}
else if (difficult_level == 1)
{
nombre_maximum *= 100;
}
else if (difficult_level == 2)
{
nombre_maximum *= 1000;
}
else
{
nombre_maximum *= 10000;
}
srand(time(NULL));
nombreMystere = (rand() % (nombre_maximum - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ?\n");
scanf("%d", &nombreEntree);
if(nombreEntree >nombre_maximum)
{
printf("Veuillez entrer un nombre inferieur ou egal a %d\n", nombre_maximum);
nombre_de_coup++;
}
else if (nombreEntree < nombreMystere)
{
printf("C'est plus !\n");
nombre_de_coup++;
}
else if (nombreEntree > nombreMystere)
{
printf("C'est moins !\n");
nombre_de_coup++;
}
else
{
printf("Vous avez trouve en %d fois,\n", nombre_de_coup);
if (nombre_de_coup>100)
{
printf("T'es vraiment nul !\n");
}
else if (nombre_de_coup>50)
{
printf("Tu dois t'ameliorer !\n");
}
else if (nombre_de_coup>20)
{
printf("T'es pas mauvais .. \n");
}
else if (nombre_de_coup>5)
{
printf("Tu te debrouilles vraiment bien !\n");
}
else
{
printf("Genius !\n");
}
printf("Do you want to play again ?\n");
printf("0. No\n");
printf("1. Yes\n");
scanf("%d", &play_again);
if (play_again = 0)
{
int reset = 2 ;
}
else
{
}
}
}while (nombreEntree != nombreMystere);
}while (play_again != 0);
}while (reset != 2);
}
Quand j'essaie de donner 0 à ma valeur play_again via "scanf", pour ensuite via ma condition "if" donner la valeur 2 à reset, le programme ne se termine pas, et ça fait à peu près 3h que je cherche tout seul, et un peu sur le net, mais je ne trouve pas, si quelqu'un pouvait m'aider s'il vous plaît, je lui en serai vraiment reconnaissant ..
L'erreur je pense, se trouve vers la fin. Voici mon code source :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int reset = 1;
do
{
int play_again = 1, difficult_level = 0;
printf("Quel niveau de difficulte voulez-vous ?\n");
printf("1. De 1 a 100 ?\n");
printf("2. De 1 a 1 000? \n");
printf("3. de 1 a 10 000?\n");
scanf("%d", &difficult_level);
do
{
int nombreMystere = 0, nombreEntree = 0, nombre_de_coup = 1, nombre_maximum = 1;
const int MIN = 1;
if (difficult_level != 1 && difficult_level != 2 && difficult_level != 3)
{
printf("Veuillez entrer 1, 2 ou 3 pour commencer a jouer.\n");
do
{
printf("Quel niveau de difficulte voulez-vous ?\n");
printf("1. De 1 a 100 ?\n");
printf("2. De 1 a 1 000? \n");
printf("3. de 1 a 10 000?\n");
scanf("%d", &difficult_level);
}while (difficult_level != 1 && difficult_level != 2 && difficult_level != 3);
}
else if (difficult_level == 1)
{
nombre_maximum *= 100;
}
else if (difficult_level == 2)
{
nombre_maximum *= 1000;
}
else
{
nombre_maximum *= 10000;
}
srand(time(NULL));
nombreMystere = (rand() % (nombre_maximum - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ?\n");
scanf("%d", &nombreEntree);
if(nombreEntree >nombre_maximum)
{
printf("Veuillez entrer un nombre inferieur ou egal a %d\n", nombre_maximum);
nombre_de_coup++;
}
else if (nombreEntree < nombreMystere)
{
printf("C'est plus !\n");
nombre_de_coup++;
}
else if (nombreEntree > nombreMystere)
{
printf("C'est moins !\n");
nombre_de_coup++;
}
else
{
printf("Vous avez trouve en %d fois,\n", nombre_de_coup);
if (nombre_de_coup>100)
{
printf("T'es vraiment nul !\n");
}
else if (nombre_de_coup>50)
{
printf("Tu dois t'ameliorer !\n");
}
else if (nombre_de_coup>20)
{
printf("T'es pas mauvais .. \n");
}
else if (nombre_de_coup>5)
{
printf("Tu te debrouilles vraiment bien !\n");
}
else
{
printf("Genius !\n");
}
printf("Do you want to play again ?\n");
printf("0. No\n");
printf("1. Yes\n");
scanf("%d", &play_again);
if (play_again = 0)
{
int reset = 2 ;
}
else
{
}
}
}while (nombreEntree != nombreMystere);
}while (play_again != 0);
}while (reset != 2);
}
Quand j'essaie de donner 0 à ma valeur play_again via "scanf", pour ensuite via ma condition "if" donner la valeur 2 à reset, le programme ne se termine pas, et ça fait à peu près 3h que je cherche tout seul, et un peu sur le net, mais je ne trouve pas, si quelqu'un pouvait m'aider s'il vous plaît, je lui en serai vraiment reconnaissant ..
A voir également:
- Problème de fin de boucle
- Fin des zfe - Guide
- Fin du partage de compte disney + - Accueil - Streaming
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Fin de la 4g en france - Accueil - Guide opérateurs et forfaits
- Fin de fruitz - Accueil - Applications & Logiciels
1 réponse
Bonjour
Quand tu écris
Pour faire une comparaison, il faut utiliser == :
https://fr.wikiversity.org/wiki/Langage_C%2B%2B/Op%C3%A9rateurs#Comparateur_d.27.C3.A9galit.C3.A9_.22.3D.3D.22
Quand tu écris
if (play_again = 0), tu ne fais pas un test d'égalité, tu fais une affectation, c'est à dire que tu donnes à play_again la valeur 0.
Pour faire une comparaison, il faut utiliser == :
https://fr.wikiversity.org/wiki/Langage_C%2B%2B/Op%C3%A9rateurs#Comparateur_d.27.C3.A9galit.C3.A9_.22.3D.3D.22
Et ensuite, j'avais déjà essayé, un message d'erreur s'était affiché comme quoi une virgule, ou un point virgule était requis avant ")", je vais donc ré-essayé, merci.
Edit : Eh bien merci, je viens de finir mon programme grâce à ça, et 2 3 autres trucs, ça m'a énormément aider, encore merci !
Une bonne pratique pour éviter ce problème est de prendre l'habitude d'inverser l'intérieur de ta condition :
Ainsi, si tu fais une erreur de frappe ou d'inattention, une affectation sera impossible et tu obtiendras une erreur de compilation ;)
++