Calculette

Résolu/Fermé
damien7258 - 22 mars 2008 à 19:28
 damien7258 - 23 mars 2008 à 17:36
Bonjour,mon professeur ma demander de faire une mini calculatrice avec un apelle de fonction voila mon programme le compilateur me dit expression de switch non integrale mais que-ce-que cela veut dire si quelle qu'un connait la réponse merci d'avance voici mon programme.

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

double mini(char signe[], double val1, double val2);

int main(void)
{

double val1=0, val2=0, resultat=0;
char signe[5];
signe[0]='+';
signe[1]='-';
signe[2]='*';
signe[3]='/';
signe[4]='/0';
printf (" tapez + pour une addition\n tapez - pour une soustraction\n tapez * pour une multiplication\n tapez / pour diviser\n tapez 0 pour quitter\n:" );
scanf ("%c", signe);


switch (signe)
{
case '+':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat= mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '-':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '*':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '/':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
default :
return 0;
}

system("PAUSE");
return 0;
}
double mini(char signe[], double val1, double val2)
{
double resultat=0;
if (signe=='+')
{
resultat=val1+val2;
return val1 + val2;
}
else if (signe=='-')
{
resultat=val1-val2;
return val1-val2;
}
else if (signe=='*')
{
resultat=val1*val2;
return val1*val2;
}
else if (signe=='/')
{
resultat=val1/val2;
return val1/val2;
}
}

5 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 435
22 mars 2008 à 19:38
ta variable signe doit etre un simple caractere et pas un tableau de caractere
0
elco Messages postés 124 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 10 mai 2008 17
22 mars 2008 à 19:50
Bonsoir damien7258,

déjà il te manque un } à la fin de ton pgr tout comme en d'autres endroits; essaies donc cela




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

double mini(char signe[], double val1, double val2);

int main(void)
{

double val1=0, val2=0, resultat=0;
char signe[5];
signe[0]='+';
signe[1]='-';
signe[2]='*';
signe[3]='/';
signe[4]='/0';
printf (" tapez + pour une addition\n tapez - pour une soustraction\n tapez * pour une multiplication\n tapez / pour diviser\n tapez 0 pour quitter\n:" );
scanf ("%c", signe);

}

switch (signe)
{
case '+':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat= mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '-':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '*':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
break;
case '/':printf("Entrer val1 et val2\n:");
scanf("%lf", &val1);
scanf("%lf", &val2);
resultat=mini(signe,val1,val2);
printf("resultat : %.2lf\n",resultat);
default :
return 0;
}

{
system("PAUSE");
return 0;
}
double mini(char signe[], double val1, double val2)
{
double resultat=0;
if (signe=='+')
{
resultat=val1+val2;
return val1+val2;
}
else if (signe=='-')
{
resultat=val1-val2;
return val1-val2;
}
else if (signe=='*')
{
resultat=val1*val2;
return val1*val2;
}
else if (signe=='/')
{
resultat=val1/val2;
return val1/val2;
}
}
}



@+
elco
0
merci beaucoup mon programme fonctionne
0
elco Messages postés 124 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 10 mai 2008 17
23 mars 2008 à 09:03
Bonjour,
je suis trés content pour toi et ton prof sera surement trés fier aussi.
Ta logique étant cohérente, il est tt à fait normal que le respect de la syntaxe conduise au succès.
A ce propoos, ce serait bien si, dans un dernier msg que tu m'adresserais, tu cochais la case RESOLU... çà aide toutes les personnes qui comme toi, souhaitent avoir une réponse correcte et rapide à leur pb. Ainsi chacun peut, avant même de poster leur pb, savoir s'il n'a pas déjà été traité etRESOLU.
Merci de le faire et ce sera avec plaisir que l'on se penchera sur les pb de damien7258.
@+
elco
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je suis désolé je ne le savait pas je vais le faire tout de suite et encore merci.
0