Erreur C debutant

Résolu/Fermé
evolution - 31 août 2011 à 21:35
 evolution - 31 août 2011 à 22:19
Bonjour,
j'apprend à coder en C grâce à notre amis bien connu mateo du site du zero,
J'en suis au c'est plus c'est moi ( je sais c'est pas très loin)
J'explique le but du programme l'ordinateur génère un nombre aléatoire il faut le trouver avec des indication c'est plus ou c'est moin.
bref le programme j'ai réussi a l'écrire, les améliorations comme le compteur de coup et les niveaus de difficulté aussi.
mais j'ai essayer autre chose qui ne marche pas c'est qu'en cas d'erreur de l'utilisateur sur le menu, le menu se réafiche.
j'arrete le suspense voila mon petit code
code block indique que l'erreur au niveau du while ! (peut etre avec le "ou")

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
const int min = 1;
int mystery_number = 0;
int max = 0;
int level = 0;

do
{
printf("1. Bebe\n");
printf("2. facile\n");
printf("3. sucidaire\n");
scanf("%d", &level);

if (level != 1, level != 2, level != 3)
printf("erreur \n");
} while (level=1 || level=2 || level=3);

if (level == 1)
max = 50;
else if (level == 2)
max = 100;
else if (level == 3)
max = 3000;
else
printf("erreur");

printf("\n Objectif: Vous devez trouver un nombre entre 1 et %d \n\n", max);

srand(time(NULL));
mystery_number = (rand() % (max - min + 1 )) + min;

int user_number = 0, shots = 1;

do
{
printf("Quel est le nombre? ");
scanf("%d", &user_number);
printf("\n");

if (user_number > mystery_number)
printf("C'est moin!\n\n");
else if (user_number < mystery_number)
printf("C'est plus! \n\n");
else
printf("Bravo vous avez trouver le nombre mystere en %d coups", shots);

shots++;

}while (user_number != mystery_number);

return 0;
}



2 réponses

supernico Messages postés 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
31 août 2011 à 21:40
le test doit prendre 2 '=' :

while (level==1 || level==2 || level==3);


;)
1
merci c'etait exact :)
mais le programme ne marche quand meme pas
lorque je met une mauvaise entrée il met deux fois erreur et se fini...
Je vais méditer dessus :/
0
supernico Messages postés 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
31 août 2011 à 21:53
tu veux qu'il fasse quoi en cas de mauvaise entrée ?
0
qu'il réaffiche le menu et me repropose
de choisir un level
0
j'ai trouver il falais mettre "!=" a la place de " ==" dans le while
0
supernico Messages postés 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
31 août 2011 à 22:00
dans ce cas il faut une option pour quitter ;)

essaie ça, j'ai modifié légèrement ton code :

main()
{
	const int min = 1;
	int mystery_number = 0;
	int max = 0;
	int level = 0;
	int user_number = 0, shots = 1;

	do
	{
		printf("0. Quitter\n");
		printf("1. Bebe\n");
		printf("2. facile\n");
		printf("3. sucidaire\n");
		scanf("%d", &level);

		if(level == 0) return 0;
		else if (level > 3)
		printf("erreur \n");
	} while (level > 3); // tant que le choix n'est pas dans la liste on demande, sinon on passe à la suite

	if (level == 1)
	max = 50;
	else if (level == 2)
	max = 100;
	else if (level == 3)
	max = 3000;
	else
	{
	printf("erreur");
	return 0;
	}

	printf("\n Objectif: Vous devez trouver un nombre entre 1 et %d \n\n", max);

	srand(time(NULL));
	mystery_number = (rand() % (max - min + 1 )) + min;

	

	do
	{
		printf("Quel est le nombre? ");
		scanf("%d", &user_number);
		printf("\n");

		if (user_number > mystery_number)
		printf("C'est moin!\n\n");
		else if (user_number < mystery_number)
		printf("C'est plus! \n\n");
		else
		printf("Bravo vous avez trouver le nombre mystere en %d coups", shots);

		shots++;

	}while (user_number != mystery_number);

	return 0;
} 
0
merci ;)
0