Partage
  • Partager sur Facebook
  • Partager sur Twitter

bug de boucle

    6 mai 2006 à 18:31:28

    Voila mon conde le problème c'est que des que je l'éxécute et que je fais menu basique je ne peut choisir que Addition le reste ne veut pas être choisis et je ne sais pas pourquoi. aidez moi svp !!

    (le code n'st pas fini mais se problème me gène.)




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

    int main(int argc, char *argv[])
    {
    long choix = 0, choixBasique = 0, menuPrincipale = 1;
    double nombre1 = 0, nombre2 = 0, resultat = 0;

       printf("Bienvenue sur ma Calculette");
       printf("\n\n");
       printf("1: Menu Basique\n");
       printf("2: Menu Convertion\n");
       printf("3: Menu trigonométrique\n");
       printf("Que veut tu faire : ");
       scanf("%ld", &choix);
       
       while (choix == 1)
       {
    system("CLS");
    printf("Bienvenue dans menu basique\n");
    printf("1: Addition\n");
    printf("2: Soustraction\n");
    printf("3: Division\n");
    printf("4: Multiplication\n");
    printf(" Que veut tu faire :");
    scanf ("%ld", &choixBasique);

    while (choixBasique = 1)
    {
    system("CLS");
    printf("Bienvenue dans Addition\n");     
    printf("entrer le nombre 1 :");
    scanf("%lf", &nombre1);
    printf("entrer le nombre 2 :");
    scanf("%lf", &nombre2);
    printf("\n\n");

    resultat = nombre1 + nombre2;

    printf("%lf + %lf = %lf", nombre1, nombre2, resultat);
    printf("\n\n\n");
    system("PAUSE");
         
    }

    while (choixBasique = 2)
    {
    system("CLS");
    printf("Bienvenue dans soustraction !!\n\n");
    printf("Entrer le nombre 1: ");
    scanf("%lf", &nombre1);
    printf("\n\n");
    printf("Entrer nombre 2: ");
    scanf("%lf", &nombre2);
    printf("\n\n");

    resultat= nombre1 - nombre2;

    printf("%lf - %lf = %lf",nombre1, nombre2, resultat);
    system("PAUSE");
    }   

    while (choixBasique = 3)
    {
    system("CLS");
    printf("Bienvenue dans division !!\n\n");
    printf("Entrer le nombre 1: ");
    scanf("%lf", &nombre1);
    printf("\n\n");
    printf("Entrer le nombre 2: ");
    scanf("%lf", &nombre2);
    printf("\n\n");

    resultat= nombre1 / nombre2;

    printf("%lf / %lf = %lf", nombre1, nombre2, resultat);
    system("PAUSE");
    }

    while (choixBasique = 4)
    {
    system("CLS");
    printf("Bienvenue dans multiplication !!\n\n");
    printf("Entrer le nombre 1: ");
    scanf("%lf", &nombre1);
    printf("\n\n");
    printf("Entrer le nombre 2: ");
    scanf("%lf", &nombre2);
    printf("\n\n");

    resultat = nombre1 * nombre2;

    printf("%lf X %lf = %lf", nombre1, nombre2, resultat);
    }



       


      system("PAUSE");     
      return 0;
    }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2006 à 18:36:11

      Il faut utiliser l'opérateur == pour une comparaison et non =
      • Partager sur Facebook
      • Partager sur Twitter
        6 mai 2006 à 18:37:37

        C'est '==' la comparaison. Pas '='
        Un compilateur bien réglé t'aurais montré ce problème tout de suite :

        Citation : Pas de titre


        tt.c: In function 'main':
        tt.c:28: warning: suggest parentheses around assignment used as truth value
        tt.c:40: warning: ISO C90 does not support the '%lf' printf format
        tt.c:40: warning: ISO C90 does not support the '%lf' printf format
        tt.c:40: warning: ISO C90 does not support the '%lf' printf format
        tt.c:46: warning: suggest parentheses around assignment used as truth value
        tt.c:59: warning: ISO C90 does not support the '%lf' printf format
        tt.c:59: warning: ISO C90 does not support the '%lf' printf format
        tt.c:59: warning: ISO C90 does not support the '%lf' printf format
        tt.c:63: warning: suggest parentheses around assignment used as truth value
        tt.c:76: warning: ISO C90 does not support the '%lf' printf format
        tt.c:76: warning: ISO C90 does not support the '%lf' printf format
        tt.c:76: warning: ISO C90 does not support the '%lf' printf format
        tt.c:80: warning: suggest parentheses around assignment used as truth value
        tt.c:93: warning: ISO C90 does not support the '%lf' printf format
        tt.c:93: warning: ISO C90 does not support the '%lf' printf format
        tt.c:93: warning: ISO C90 does not support the '%lf' printf format
        tt.c:6: warning: unused variable 'menuPrincipale'
        tt.c:4: warning: unused parameter 'argc'
        tt.c:4: warning: unused parameter 'argv'
        tt.c:104: warning: control reaches end of non-void function



        (cf le problème concernant la ligne 28, qui se répète, bien entendu...)
        • Partager sur Facebook
        • Partager sur Twitter
          6 mai 2006 à 18:39:16

          Et en plus, c'est bizarre d'utiliser autant de while. Tu ferait pas mieux d'utiliser des if pour tester toutes tes conditoins ? (où encore mieux un bon switch). Parce quelà, même en remplaçant les "=" par "==", tu tournera en boucle infinie...
          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2006 à 18:42:40

            merci tout le monde.

            je sais nico mais c'est juste pour tester. sinon il suffit de demander a chaque fin d'operation si on veut retourner au menu principale avec eds switch c'est pas très dur.
            • Partager sur Facebook
            • Partager sur Twitter

            bug de boucle

            × 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