Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème : calculatrice en C

Sujet résolu
Anonyme
    24 octobre 2008 à 17:34:43

    bonjour ,j'ai écrit un code en C pour une petite calculatrice mais ça ne marche pas. Lors de la compilation le debugger affiche :
    error C2050: expression de switch non intégrale

    voici le code :


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main ( int argc, char** argv )
    {
    
    	double choixOperation=0, nombre1=0, nombre2=0, resultat=0;
    	
    	printf("\t\tChoisissez l'operation a effectuer :\n\n"); 
            printf("\t 1. Addition\n");
            printf("\t 2. Soustraction\n"); 
            printf("\t 3. Multiplication\n"); 
            printf("\t 4. Division\n"); 
            printf("\t 5.Puissance carree\n"); 
            printf("\t 6. Racine caree"); 
            scanf("%lf",&choixOperation); 
    
    	switch (choixOperation)
    	{
    case 1:
    	printf("\tEntrez les membres de l'addition :\nNombre 1 :");
    	scanf("%lf",&nombre1);
    	printf("Nombre 2:");
    	scanf("%lf",&nombre2);
    	resultat = nombre1+nombre2;
    	printf("%lf + %lf = %lf",nombre1,nombre2, resultat);
    	break;
    
    case 2:
    	printf("\tEntrez les membres de la soustraction : \nNombre 1 :");
    	scanf("%lf",&nombre1);
    	printf("Nombre 2 :");
    	scanf("%lf",&nombre2);
    	resultat = nombre1-nombre2;
    	printf("%lf - %lf = %lf",nombre1, nombre2, resultat);
    	break;
    
    case 3:
    	printf("Entrez les membres de la multiplication: \nNombre 1 :");
    	scanf("%lf",&nombre1);
    	printf("Nombre 2 :");
    	scanf("%lf",&nombre2);
    	resultat = nombre1*nombre2;
    	printf("%lf * %lf = %lf",nombre1,nombre2,resultat);
    	break;
    
    case 4:
    	printf("Entrez les membres de la division : \n Dividende :");
    	scanf("%lf",&nombre1);
    	printf("Diviseur : ");
    	scanf("%lf",&nombre2);
    	resultat = nombre1/nombre2;
    	printf(" %lf / %lf = %lf", nombre1, nombre2, resultat);
    	break;
    
    case 5:
    	printf("Entrez le nombre dont vous voulez calculez la puissance caree:");
    	scanf("%lf",&nombre1);
    	resultat = pow(nombre1, 2);
    	printf("%lf à la puissance carree = %ld",nombre1,resultat);
    	break;
    
    case 6:
    	printf("Entrez le nombre dont vous voulez calculer la racine caree :");
    	scanf("%lf",&nombre1);
    	resultat = sqrt(nombre1);
    	printf("Racine carree de %lf = %lf",nombre1,resultat);
    	break;
    default:
    	printf("Choix invalide");
    	break;
    	}
        system("PAUSE");
    	return 0;
    }
    



    Quelqu'un peut-il m'expliquer ce qui ne va pas avec ce code?
    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      24 octobre 2008 à 17:37:10

      Essaie d'initialiser "choixOperation" comme une variable entière pour voir :p (si ça marche pas j'ai pas comprit o_O )
      • Partager sur Facebook
      • Partager sur Twitter
        24 octobre 2008 à 17:37:24

        Ca met plutôt ça:

        Compiling: main.c
        \Documents\code block\zero\main.c: In function `main':
        \Documents\code block\zero\main.c:18: error: switch quantity not an integer
        \Documents\code block\zero\main.c:60: warning: long int format, double arg (arg 3)
        Process terminated with status 1 (0 minutes, 0 seconds)
        1 errors, 1 warnings


        Tu vois ce qu'il va pas?
        • Partager sur Facebook
        • Partager sur Twitter
          24 octobre 2008 à 17:43:35

          En deux parties: tu convertis ton double en long ou en int et tu remplaces %lf par %ld. Une switch ne fonctionne que pour les nombres entiers.

          Un peu dénué d'arguments, mais c'est comment les choses fonctionnent, pas plus à dire.
          • Partager sur Facebook
          • Partager sur Twitter

          problème : calculatrice en C

          × 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