Probleme calculatrice en langage C

Fermé
flo0263 - 21 févr. 2011 à 21:28
 flo0263 - 21 févr. 2011 à 22:34
Bonjour,

J'ai un problème je veux programmer une calculatrice en langage C a l'aide de fonctions pour les calculs. Seul problème le prog me renvoi toujours le même résultat : 2

voilà si quelqu'un pourrait m'aider ce serait sympa ^^

#include <stdio.h>

int produit(int a,int b)
{
return (a*b);
}

int addition (int c, int d)
{
return (c+d);
}

int soustraction (int e, int f)
{
return (e-f);
}

int division (int g, int h)
{
return (g/h);
}


int main()
{
int a,b, resultat, operateur;

printf("Saisir deux entiers positifs : \n");
scanf("%d", &a);
scanf("%d", &b);
printf("Saisir l'operateur : \n");
scanf("%d", &operateur);

if (operateur=='+')
{
resultat=addition(a,b);
printf("le resultat est : %d \n",resultat);
}
else if (operateur=='-')
{
resultat=soustraction(a,b);
printf("le resultat est : %d \n",resultat);
}
else if (operateur=='/')
{
resultat=division(a,b);
printf("le resultat est : %d \n",resultat);
}
else if (operateur=='*')
{
resultat=produit(a,b);
printf("le resultat est : %d \n",resultat);
}

printf("le resultat est : %d \n",resultat);

system ("PAUSE");


}



A voir également:

5 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
21 févr. 2011 à 22:02
Bonsoir,
A première vue, ta variable operateur devrait plutôt être un caractère et non un entier (dans la déclaration et dans le scanf). Le dernier printf est inutile.

@+
2
operateur doit etre un caractère (char).
et si vous n'etes pas trop fan du "if" comme moi utiliser switch. attention a ne pas gener le compilateur : "rectifier toutes vos scanf
bonne chance
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
Modifié par fiddy le 21/02/2011 à 22:17
Bonjour,

Que ta variable te renvoie 2 est une coïncidence. En fait, elle renvoie sa valeur initiale. Et comme elle n'a pas été initialisée, cela renvoie une valeur bidon.

Pour ta variable "operateur", tu vas lui rentrer des valeurs au clavier : '/', '-', '*' et '+'. Ce sont des caractères. A moins, que tu veuilles rentrer le code ascii ^^.
Donc, mets plutôt : char operateur; et surtout : scanf("%c",&operateur); ou plus simplement operateur=getchar();
Attention, il y aura un '\n' dans le buffer clavier à cause des scanf("%d",...), il faut l'enlever. Tu peux utiliser pour ceci : getchar();

Pour récapituler :
char operateur; 
getchar(); 
operateur=getchar(); /*ou scanf("%c",&operateur);*/ 

Et attention, tu affiches plusieurs fois : "le résultat est".

Sinon, en conseil : tu as mis des "else if", t'aurais dû mettre en plus un "else" (pour dire par exemple "choix incorrect". Cela t'aurait permis de voir le problème.

Cdlt,

Google is your friend
1
merci je vais tout de suite essayer avec les modifs'
0

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

Posez votre question
Merci a tous !
0