Probleme en language C

Résolu/Fermé
Problemard - 28 avril 2009 à 21:49
 Problemard - 29 avril 2009 à 19:06
Bonjour,

Voila , j'ai tapé ce code :

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

int main(int argc, char *argv[])
{

long nombreMystere = 0;
long choix3 = 0;
long conMAX;
long conMIN = 1;
long choix1 = 0;
long choix2;

printf("Bonjour ! Le but est de trouver le nombre mystere : c'est parti !\n");
printf("Genereation du nombre mystere ...\n");

do
{


printf("Choisissez un niveau :\n 1 - Facile ( entre 1 et 100 )\n 2 - Moyen ( entre 1 et 500 )\n 3 - Difficile ( entre 1 et 1000 )\n=== ");
scanf("%ld", &choix2);


if ( choix2 == 1 && choix2 !=3 && choix2 != 2 )
{
printf("Vous avez choisi le niveau 1\n");
conMAX = 100;

}

else if ( choix2 == 2 && choix2 != 3 && choix2 != 1 )
{
printf("Vous avez choisi le niveau 2\n");
conMAX = 500;


}

else if ( choix2 == 3 && choix2 != 1 && choix2 != 2 )
{
printf("Vous avez choisi le niveau 3\n");
conMAX = 1000;

}




do
{
{
printf("Veuillez choisir un nombre : ");
scanf("%ld" , &choix3);
}


srand(time(NULL));
nombreMystere = (rand() % (conMAX - conMIN + 1)) + conMIN;

if ( choix3 < nombreMystere )
printf("Le nombre mystere est plus grand que ca !!\n");
else
if ( choix3 > nombreMystere )
printf("Le nombre mystere est plus petit que ca !!\n");

else
printf("Bravo !!! Vous avez trouve le nombre mystere !!!\n");

}while ( choix3 != nombreMystere );



if ( choix3 == nombreMystere )
{
printf("Voulez-vous rejouer ???\n 1 - Oui\n 2 - Non\n");
scanf("%ld" ,&choix1);
}
else
printf("Veuillez entrer un nombre correct");
} while ( choix1 == 1);
return 0;
}


et je me demandais , le code en lui meme marche , mais si vous pretez attention aux resultats vous y verriez un probleme ...

A vous de voir ..

Merci d'avance ,
cordialement ,¨
Problemard

3 réponses

thomas87b Messages postés 275 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 23 octobre 2020 64
28 avril 2009 à 22:08
À quoi ça sert de dire if ( choix2 == 1 && choix2 !=3 && choix2 != 2 ) ?

Si choix2==1, il est forcement différent de 2 et de 3.


Là, c'est pareil :
}while ( choix3 != nombreMystere );

if ( choix3 == nombreMystere )
{

choix3 est forcement égal à nombreMystere.

0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 avril 2009 à 23:28
Salut,
En effet, beaucoup de redondance dans les conditions.
En plus ton srand(time(NULL)) ainsi que le calcul de "nombreMystere" sont définis dans ta boucle do-while, donc exécutés à chaque itération.

Voici ton programme corrigé :

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

int main(void)
{

    long nombreMystere = 0;
    long choix3 = 0;
    long conMAX;
    long conMIN = 1;
    long choix1 = 0;
    long choix2;

    printf("Bonjour ! Le but est de trouver le nombre mystere : c'est parti !\n");
    printf("Genereation du nombre mystere ...\n");

    do
    {
        printf("Choisissez un niveau :\n 1 - Facile ( entre 1 et 100 )\n 2 - Moyen ( entre 1 et 500 )\n 3 - Difficile ( entre 1 et 1000 )\n=== ");
        scanf("%ld", &choix2);
        switch(choix2) {
            case 1:
                printf("Vous avez choisi le niveau 1\n");
                conMAX = 100;
                break;
            case 2:
                printf("Vous avez choisi le niveau 2\n");
                conMAX = 500;
                break;

            case 3:
                printf("Vous avez choisi le niveau 3\n");
                conMAX = 1000;
                break;
        }

        srand(time(NULL));
        nombreMystere = (rand() % (conMAX - conMIN + 1)) + conMIN;

        do
        {
            printf("Veuillez choisir un nombre : ");
            scanf("%ld" , &choix3);

            if (choix3 < nombreMystere)
                printf("Le nombre mystere est plus grand que ca !!\n");
            else if (choix3 > nombreMystere)
                printf("Le nombre mystere est plus petit que ca !!\n");
            else
                printf("Bravo !!! Vous avez trouve le nombre mystere !!!\n");
        }while (choix3 != nombreMystere);

        do {
            printf("Voulez-vous rejouer ???\n 1 - Oui\n 2 - Non\n");
            scanf("%ld" ,&choix1);
            switch(choix1) {
                case 1:
                    break;
                case 2:
                    return 0;
                default:
                    choix1=-1;
                    printf("Veuillez entrer un nombre correct\n");
            }
        } while(choix1==-1);

    } while ( choix1 == 1);

    return 0;
} 


Cdlt
0
Bonjour a toi ,
Merci beaucoup je vien de comparer les deux codes et j'ai compris mes erreurs ^^

( pour les trucs la " && choix2 != 3 ... " je sais que ca ne sert a rien mais en fait si tu teste mon code tu comprendra pourquoi j'ai mis ca ^^ )


Merci beaucoup ^^

A plus ^^
0