Probleme en language C

Résolu
Problemard -  
 Problemard -
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
Configuration: Windows Vista
Safari 528.16

3 réponses

  1. thomas87b Messages postés 306 Statut Membre 64
     
    À 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
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  3. Problemard
     
    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