Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit probleme d'un petit programme

    18 février 2006 à 16:57:29

    Bonjour a tous! :)
    Je post un nouveau topic mais si ce n'était pas la peine redirigez le ou vous voudrez, désolé d'avance et si le problème a déjà été traité désolé encore, en tout cas j’ai cherché et je n’ai rien trouvé ^^
    Ce programme vient du TP que Mateo nous a donné dans le cours du langage C.
    Mon problème: Mon programme marche correctement jusqu'a la fin, mais a ce niveau la le programme recommence mais cette fois ci au niveau supérieur alors que mon but était qu'il demande si nous voulions recommencer une partie.
    Je m'y suis acharné pendant plus d'une heure et cela m'a valu des cheveux en moins.
    Je sais que c'est simple mais je débute alors soyez indulgent s'il vous plait ^^"
    Ma façon de programmer est assez brouillonne oui et si vous voulez me donnez des conseils je suis toute ouïe
    Sur ce, merci d'avance!


    Citation : Mon programme

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

    int main(int argc, char *argv[])
    {
    int continuer=1;
    while (continuer)
    {
    int difficulte=0;
    printf("Voici les différents niveaux de difficulté:\n");
    printf("1. Le nombre sera entre 1 et 100\n");
    printf("2. Le nombre sera entre 1 et 1000\n");
    printf("3. Le nombre sera entre 1 et 10000\n\n");
    printf("Maintenant choisissez: \n");
    scanf("%ld", &difficulte);
    switch (difficulte)
    {
    case 1:
    printf("Vous avez choisi le niveau 1!\n\n\n");
    long MAX1 = 100, MIN1 = 1;
    long nombre1=0, demande1=0, compteur1=1;
    int joueur1=0;
    printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
    scanf("%ld", &joueur1);
    switch (joueur1)
    {
    case 1:
    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
    printf("Tapez votre chiffre mystere: ");
    scanf("%ld", &nombre1);
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande1);
    if (nombre1<demande1)
    printf("C'est moins!\n");
    if (nombre1>demande1)
    printf("C'est plus!\n");
    if (nombre1==demande1)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur1);
    compteur1++;
    } while (nombre1!=demande1);
    break;
    case 0:
    printf("Vous avez pris le mode 1 joueur!\n\n\n");
    srand(time(NULL));
    nombre1 = (rand() % (MAX1 - MIN1 + 1)) + MIN1;
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande1);
    if (nombre1<demande1)
    printf("C'est moins!\n");
    if (nombre1>demande1)
    printf("C'est plus!\n");
    if (nombre1==demande1)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur1);
    compteur1++;
    } while (nombre1!=demande1);
    break;
    default:
    printf("Fallait dire 0 ou 1 abruti!\n");
    break;
    }
    case 2:
    printf("Vous avez choisi le niveau 2!\n\n\n");
    long MAX2 = 1000, MIN2 = 1;
    long nombre2=0, demande2=0, compteur2=1;
    int joueur2=0;
    printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
    scanf("%ld", &joueur2);
    switch (joueur2)
    {
    case 1:
    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
    printf("Tapez votre chiffre mystere: ");
    scanf("%ld", &nombre2);
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande2);
    if (nombre2<demande2)
    printf("C'est moins!\n");
    if (nombre2>demande2)
    printf("C'est plus!\n");
    if (nombre2==demande2)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur2);
    compteur2++;
    } while (nombre2!=demande2);
    break;
    case 0:
    printf("Vous avez pris le mode 1 joueur!\n\n\n");
    srand(time(NULL));
    nombre2 = (rand() % (MAX2 - MIN2 + 1)) + MIN2;
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande2);
    if (nombre2<demande2)
    printf("C'est moins!\n");
    if (nombre2>demande2)
    printf("C'est plus!\n");
    if (nombre2==demande2)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur2);
    compteur2++;
    } while (nombre2!=demande2);
    break;
    default:
    printf("Fallait dire 0 ou 1 abruti!\n");
    break;
    }
    case 3:
    printf("Vous avez choisi le niveau 3!\n\n\n");
    long MAX3 = 10000, MIN3 = 1;
    long nombre3=0, demande3=0, compteur3=1;
    int joueur3=0;
    printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
    scanf("%ld", &joueur3);
    switch (joueur3)
    {
    case 1:
    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
    printf("Tapez votre chiffre mystere: ");
    scanf("%ld", &nombre3);
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande3);
    if (nombre3<demande3)
    printf("C'est moins!\n");
    if (nombre3>demande3)
    printf("C'est plus!\n");
    if (nombre3==demande3)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur3);
    compteur3++;
    } while (nombre3!=demande3);
    break;
    case 0:
    printf("Vous avez pris le mode 1 joueur!\n\n\n");
    srand(time(NULL));
    nombre3 = (rand() % (MAX3 - MIN3 + 1)) + MIN3;
    do
    {
    printf("Quel est le nombre?");
    scanf("%ld", &demande3);
    if (nombre3<demande3)
    printf("C'est moins!\n");
    if (nombre3>demande3)
    printf("C'est plus!\n");
    if (nombre3==demande3)
    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur3);
    compteur3++;
    } while (nombre3!=demande3);
    break;
    default:
    printf("Fallait dire 0 ou 1 abruti!\n");
    break;
    }
    printf("Voulez vous refaire une partie? (1.oui;0.non)");
    scanf("%ld", &continuer);
    switch (continuer)
    {
    case 1:
    printf("C'est reparti !!\n\n\n");
    break;
    case 0:
    printf("A plus tard!\n\n\n");
    break;
    default:
    printf("Fallait dire 1 ou 2 abruti!\n");
    break;
    }
    }
    }
    system("PAUSE");
    return 0;
    }


    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 17:09:13

      Utilise la balise "code", combien de fois faudra le répéter à la fin? J'croyais qu'les post-its étaient visibles pourtant. o_O
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 17:18:10

        Indente ton code, c'est illisible.

        (je dirais que ca sent les break oubliés, mais j'ai pas réussi à déméler les différents niveaux de switch imbriqués, alors je peux rien faire)

        http://fr.wikipedia.org/wiki/Indentation#Informatique
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 février 2006 à 18:05:25

          Euh c'est un beau bord** ce truc lol, j'essaye déjà de faire un code qui ressemble à quelque chose et si personne à trouver la solution entre temps je te la dit :)

          Euh en faites c'est tellement bordéli*** que je n'arrive pas à tous déméler (enfin si mais j'ai la flemme car il faudrait tous virer et faire des fonctions).

          EDIT: Euh sa te gêne si je modifie complètement le code?
          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2006 à 18:49:34

            Tu avais oublié 3 break et mal placé le bloc qui propose de refaire une partie ;)

            Voici le code correct (j'ai testé ça marche):


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

            int main(int argc, char *argv[])
            {
                int continuer=1;
                while (continuer)
                {
                    int difficulte=0;
                    printf("Voici les différents niveaux de difficulté:\n");
                    printf("1. Le nombre sera entre 1 et 100\n");
                    printf("2. Le nombre sera entre 1 et 1000\n");
                    printf("3. Le nombre sera entre 1 et 10000\n\n");
                    printf("Maintenant choisissez: \n");
                    scanf("%ld", &difficulte);
                    switch (difficulte)
                    {
                        case 1:
                            printf("Vous avez choisi le niveau 1!\n\n\n");
                            long MAX1 = 100, MIN1 = 1;
                            long nombre1=0, demande1=0, compteur1=1;
                            int joueur1=0;
                            printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
                            scanf("%ld", &joueur1);
                            switch (joueur1)
                            {
                                case 1:
                                    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                    printf("Tapez votre chiffre mystere: ");
                                    scanf("%ld", &nombre1);
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande1);
                                        if (nombre1<demande1)
                                            printf("C'est moins!\n");
                                        if (nombre1>demande1)
                                            printf("C'est plus!\n");
                                        if (nombre1==demande1)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur1);
                                        compteur1++;
                                    } while (nombre1!=demande1);
                                    break;

                                case 0:
                                    printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                    srand(time(NULL));
                                    nombre1 = (rand() % (MAX1 - MIN1 + 1)) + MIN1;
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande1);
                                        if (nombre1<demande1)
                                            printf("C'est moins!\n");
                                        if (nombre1>demande1)
                                            printf("C'est plus!\n");
                                        if (nombre1==demande1)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur1);
                                        compteur1++;
                                    } while (nombre1!=demande1);
                                    break;

                                default:
                                    printf("Fallait dire 0 ou 1 abruti!\n");
                                    break;
                            }
                            break; // Tu as oublié un break ici

                        case 2:
                            printf("Vous avez choisi le niveau 2!\n\n\n");
                            long MAX2 = 1000, MIN2 = 1;
                            long nombre2=0, demande2=0, compteur2=1;
                            int joueur2=0;
                            printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
                            scanf("%ld", &joueur2);
                            switch (joueur2)
                            {
                                case 1:
                                    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                    printf("Tapez votre chiffre mystere: ");
                                    scanf("%ld", &nombre2);
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande2);
                                        if (nombre2<demande2)
                                            printf("C'est moins!\n");
                                        if (nombre2>demande2)
                                            printf("C'est plus!\n");
                                        if (nombre2==demande2)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur2);
                                        compteur2++;
                                    } while (nombre2!=demande2);
                                    break;

                                case 0:
                                    printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                    srand(time(NULL));
                                    nombre2 = (rand() % (MAX2 - MIN2 + 1)) + MIN2;
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande2);
                                        if (nombre2<demande2)
                                            printf("C'est moins!\n");
                                        if (nombre2>demande2)
                                            printf("C'est plus!\n");
                                        if (nombre2==demande2)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur2);
                                        compteur2++;
                                    } while (nombre2!=demande2);
                                    break;

                                default:
                                    printf("Fallait dire 0 ou 1 abruti!\n");
                                    break;
                            }
                            break; // Un autre ici

                        case 3:
                            printf("Vous avez choisi le niveau 3!\n\n\n");
                            long MAX3 = 10000, MIN3 = 1;
                            long nombre3=0, demande3=0, compteur3=1;
                            int joueur3=0;
                            printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
                            scanf("%ld", &joueur3);
                            switch (joueur3)
                            {
                                case 1:
                                    printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                    printf("Tapez votre chiffre mystere: ");
                                    scanf("%ld", &nombre3);
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande3);
                                        if (nombre3<demande3)
                                            printf("C'est moins!\n");
                                        if (nombre3>demande3)
                                            printf("C'est plus!\n");
                                        if (nombre3==demande3)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur3);
                                        compteur3++;
                                    } while (nombre3!=demande3);
                                    break;

                                case 0:
                                    printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                    srand(time(NULL));
                                    nombre3 = (rand() % (MAX3 - MIN3 + 1)) + MIN3;
                                    do
                                    {
                                        printf("Quel est le nombre?");
                                        scanf("%ld", &demande3);
                                        if (nombre3<demande3)
                                            printf("C'est moins!\n");
                                        if (nombre3>demande3)
                                            printf("C'est plus!\n");
                                        if (nombre3==demande3)
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur3);
                                        compteur3++;
                                    } while (nombre3!=demande3);
                                    break;

                                default:
                                    printf("Fallait dire 0 ou 1 abruti!\n");
                                    break;
                            }
                            break; // Et un autre ici
                    }

                    printf("Voulez vous refaire une partie? (1.oui;0.non)");
                    scanf("%ld", &continuer);
                    switch (continuer)
                    {
                        case 1:
                            printf("C'est reparti !!\n\n\n");
                            break;

                        case 0:
                            printf("A plus tard!\n\n\n");
                            break;

                        default:
                            printf("Fallait dire 1 ou 2 abruti!\n");
                            break;
                    }
                }
                system("PAUSE");
                return 0;
            }

            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2006 à 18:55:21

              En fait ton code est un peu redondant, tu pourrai simplement faire une condition pour la difficulter au lieu de réécrire a chaque fois tout le code pour une difficulté.
                          if (difficulte == 1)
                          {
                              max = 100;
                              srand(time(NULL));
                              nombreMystere = (rand() % (max - min + 1)) + min;
                          }
                          else if (difficulte == 2)
                          {
                              max = 1000;
                              srand(time(NULL));
                              nombreMystere = (rand() % (max - min + 1)) + min;
                          }
                          else
                          {
                              max = 10000;
                              srand(time(NULL));
                              nombreMystere = (rand() % (max - min + 1)) + min;
                          }

              Avec ce bout de code tu n'est pas obliger de tout réecrire a chaque fois ;)

              ps : je ne sais pas si je dois remettre a chaque fois
              srand(time(NULL));
              • Partager sur Facebook
              • Partager sur Twitter
                18 février 2006 à 19:20:18

                Bonjour Amadeus,

                Je ne comprends pas pourquoi tu mets

                Citation : Amadeus

                while (continuer)
                et non pas
                while (continuer==1)


                Pourrais tu m'expliquer s'il te plait ?


                ++


                Bladeee
                • Partager sur Facebook
                • Partager sur Twitter
                  18 février 2006 à 19:23:43

                  while (continuer) est identique à while (continuer == 1), c'est le principe des booléens. while (continuer) signifie "tant que continuer est vrai", or les booléens valent 1 lorsqu'ils sont vrais et 0 lorsqu'ils sont faux.
                  Va relire le chapitre sur les conditions si tu ne comprends pa, personnellement j'ai aussi eu un peu de mal avec ça au début^^.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 février 2006 à 19:27:26

                    Citation : Bladeee

                    Bonjour Amadeus,

                    Je ne comprends pas pourquoi tu mets

                    Citation : Amadeus

                    while (continuer)

                    et non pas

                    while (continuer==1)



                    Pourrais tu m'expliquer s'il te plait ?


                    ++


                    Bladeee



                    Comme le dit _Azerty777:

                    while (continuer)


                    est identique à

                    while (continuer == 1)


                    et

                    while (!continuer)


                    est identique à

                    while (continuer == 0)


                    ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 février 2006 à 19:37:40

                      Ok merci beaucoup à vous deux, j'ai compris :D .

                      ++

                      Bladeee
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 février 2006 à 20:10:57

                        A d'accord!
                        J'ai completement oublié de "breaker" ma case du switch.
                        Merci de vous etre casser la tete pour ce code qui mérite BEAUCOUP de rangement.
                        Nosti je ne comprend pas encore ton code mais je vais y réfléchir.
                        Merci encore! ^^
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 février 2006 à 20:11:02

                          Je dirais plutot que
                          while (continuer)

                          est identique à
                          while (continuer != 0)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 février 2006 à 20:16:47

                            Euh, si je puis me permettre, c'est pas exactement vrai, puisque (enfin, il me semble), while(continuer) sera considéré comme vrai tant que continuer est différent de 0, c'est à dire qu'il peut valoir 1, mais aussi 54, ça marchera. Il fat donc faire attention si ta variable peut admettre d'autres solution que 0 et 1, il faut expliciter le == 1.

                            Voila, en espèrant ne pas avoir embrouillé tout le monde.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 février 2006 à 23:23:24

                              Ce que tu dis est vrai, mais quand on utilise un booléen, on s'arrange pour qu'il vaille toujours 0 ou 1 en général^^. Et si l'utilisateur décide de faire l'idiot (par exemple on lui demande si il veut rejouer et il répond "bidule"), ben tant pis pour lui. :p
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 février 2006 à 23:41:33

                                Citation : _Azerty777

                                Ce que tu dis est vrai, mais quand on utilise un booléen, on s'arrange pour qu'il vaille toujours 0 ou 1 en général^^. Et si l'utilisateur décide de faire l'idiot (par exemple on lui demande si il veut rejouer et il répond "bidule"), ben tant pis pour lui. :p



                                ban :o !

                                Ne JAMAIS faire confiance à l'utilisteur, et ne jamais permettre de comportement non prévu. Si l'utilisateur ne rentre pas ce qu'il faut, alors on lui redemande ou alors on le jette avec un message d'erreur.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 février 2006 à 1:31:45

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

                                  int main(int argc, char *argv[])
                                  {
                                    srand(time(NULL));

                                    bool continuer;
                                    int difficulte;
                                    long MAX, MIN;
                                    long nombre, demande, compteur;
                                    int joueur;
                                    do{
                                        printf("Voici les différents niveaux de difficulté:\n");
                                        printf("1. Le nombre sera entre 1 et 100\n");
                                        printf("2. Le nombre sera entre 1 et 1000\n");
                                        printf("3. Le nombre sera entre 1 et 10000\n\n");
                                        printf("Maintenant choisissez: \n");
                                        scanf("%ld", &difficulte);
                                        switch (difficulte)
                                          {
                                          case 1:
                                            printf("Vous avez choisi le niveau 1!\n\n\n");

                                            MAX      = 100;
                                            MIN      = 1;
                                            nombre   = 0;
                                            demande  = 0;
                                            compteur = 1;

                                            printf("Prenez-vous le mode 2 joueurs? (1.oui; 0.non)\n");
                                            scanf("%ld", &joueur);
                                            switch (joueur)
                                              {
                                              case 1:
                                                printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                                printf("Tapez votre chiffre mystere: ");
                                                scanf("%ld", &nombre);
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre < demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre > demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre == demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre != demande);
                                                break;

                                              case 0:
                                                printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                                nombre = (rand() % (MAX - MIN + 1)) + MIN;
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre < demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre > demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre == demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre != demande);
                                                break;
                                              default:
                                                printf("Fallait dire 0 ou 1 abruti!\n");
                                                break;
                                              }
                                            break;

                                          case 2:
                                            printf("Vous avez choisi le niveau 2!\n\n\n");

                                            MAX      = 1000;
                                            MIN      = 1;
                                            nombre   = 0;
                                            demande  = 0;
                                            compteur = 1;

                                            printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
                                            scanf("%ld", &joueur);
                                            switch (joueur)
                                              {
                                              case 1:
                                                printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                                printf("Tapez votre chiffre mystere: ");
                                                scanf("%ld", &nombre);
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre < demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre > demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre == demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre != demande);
                                                break;
                                              case 0:
                                                printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                                srand(time(NULL));
                                                nombre = (rand() % (MAX - MIN + 1)) + MIN;
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre < demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre > demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre == demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre != demande);
                                                break;
                                              default:
                                                printf("Fallait dire 0 ou 1 abruti!\n");
                                                break;
                                              }
                                            break;
                                          case 3:
                                            printf("Vous avez choisi le niveau 3!\n\n\n");

                                            MAX      = 10000;
                                            MIN      = 1;
                                            nombre   = 0;
                                            demande  = 0;
                                            compteur = 1;

                                            printf("Prenez-vous le mode 2 joueurs? (1.oui;0.non)\n");
                                            scanf("%ld", &joueur);
                                            switch (joueur)
                                              {
                                              case 1:
                                                printf("Vous avez pris le mode 2 joueurs!\n\n\n");
                                                printf("Tapez votre chiffre mystere: ");
                                                scanf("%ld", &nombre);
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre<demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre>demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre==demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre!=demande);
                                                break;
                                              case 0:
                                                printf("Vous avez pris le mode 1 joueur!\n\n\n");
                                                srand(time(NULL));
                                                nombre = (rand() % (MAX - MIN + 1)) + MIN;
                                                do
                                                  {
                                                    printf("Quel est le nombre?");
                                                    scanf("%ld", &demande);
                                                    if (nombre<demande)
                                                      printf("C'est moins!\n");
                                                    if (nombre>demande)
                                                      printf("C'est plus!\n");
                                                    if (nombre==demande)
                                                      printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                    compteur++;
                                                  } while (nombre!=demande);
                                                break;
                                              default:
                                                printf("Fallait dire 0 ou 1 abruti!\n");
                                                break;
                                              }
                                          }
                                        printf("Voulez vous refaire une partie? (1.oui;0.non)");
                                        scanf("%ld", &continuer);
                                        switch (continuer)
                                          {
                                          case 1:
                                            printf("C'est reparti !!\n\n\n");
                                            break;
                                          case 0:
                                            printf("A plus tard!\n\n\n");
                                            break;
                                          default:
                                            printf("Fallait dire 1 ou 2 abruti!\n");
                                            break;
                                          }
                                    }while(continuer);
                                    return 0;
                                  }

                                  Bon, j'ai fais un énorme travail de correction comme tu peux le voir !
                                  On déclare ses variables au débuts du programme ce qui évite de créer x variables pour rien !
                                  Et de redéclarer lorsque la boucle recommence des variables existantes.

                                  J'ai rajouté des breaks pour tes case et j'ai sorti le test pour refaire une partie du case 3 ;)

                                  Et voilà !
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 février 2006 à 7:15:46

                                    Tu répètes quand même la même chose 50 fois...

                                    EDIT : voici une version corrigée :
                                    #include <stdio.h>
                                    #include <stdlib.h>
                                    #include <time.h>

                                    #define CONTINUER 1
                                    #define QUITTER 0

                                    int main(int argc, char *argv[]) {
                                            srand(time(NULL));
                                           
                                            int continuer = CONTINUER;
                                            long MAX;
                                            do {
                                                    printf("Voici les différents niveaux de difficulté:\n");
                                                    printf("1. Le nombre sera entre 1 et 100\n");
                                                    printf("2. Le nombre sera entre 1 et 1000\n");
                                                    printf("3. Le nombre sera entre 1 et 10000\n\n");
                                                    printf("Maintenant choisissez: \n");
                                                   
                                                    int difficulte;
                                                    scanf("%ld", &difficulte);
                                                    printf("Vous avez choisi le niveau %ld!\n\n\n", difficulte);
                                                    switch (difficulte) {
                                                    case 1: MAX = 100; break;
                                                    case 2: MAX = 1000; break;
                                                    case 3: MAX = 10000; break;
                                                    default :
                                                            printf("Choix invalide\n");
                                                            printf("Niveau regle a 1 par defaut.\n");
                                                            MAX = 100;
                                                    }
                                                   
                                                    int joueur;
                                                    long nombre;
                                                    printf("Prenez-vous le mode 2 joueurs? (1.oui; 0.non)\n");
                                                    scanf("%ld", &joueur);
                                                    switch (joueur) {
                                                    case 1:
                                                            printf("Vous avez pris le mode 2 joueurs !\n\n\n");
                                                            printf("Tapez votre chiffre mystere: ");
                                                            scanf("%ld", &nombre);
                                                            nombre %= MAX;
                                                            break
                                                    case 0:
                                                            printf("Vous avez pris le mode 1 joueur !\n\n\n");
                                                            nombre = (rand() % MAX) + 1;
                                                            break;
                                                    default:
                                                            printf("Fallait dire 0 ou 1 abruti!\n");
                                                            break;
                                                    }
                                                   
                                                    long demande, compteur = 0;
                                                    do {
                                                            printf("Quel est le nombre?\t");
                                                            scanf("%ld", &demande);
                                                            if (nombre < demande)
                                                                    printf("C'est moins!\n");
                                                            if (nombre > demande)
                                                                    printf("C'est plus!\n");
                                                            if (nombre == demande)
                                                                    printf("Bravo, vous avez trouve le nombre mystere en %ld coup!\n\n\n", compteur);
                                                            compteur++;
                                                    } while (nombre != demande);
                                                   
                                                    int recommencer;
                                                    printf("Voulez-vous refaire une partie ? (1 : oui. 0 : non)\t");
                                                    scanf("%d", &recommencer);
                                                    if (0 == recommencer) continuer == QUITTER;

                                            } while(continuer == CONTINUER);
                                            return 0;
                                    }


                                    C'est quand même plus de deux fois plus cours.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 février 2006 à 10:43:50

                                      En effet ;) Mais tu as vu l'heure à laquelle j'ai posté le message ? ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Petit probleme d'un petit programme

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown