Petit bleme dans un programme de calculette

Résolu
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
 Je reste anonyme! -
Bonjour,
je suis débutant en programmation et mon prof m'a dit de programmer une "mini calculette" en C et en consol :
voici ce que j'ai fais :

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

int main(int argc, char *argv[])
{
double ChoixOperation = 0.0, Nombre1 = 0.0, Nombre2 = 0.0, Resultat = 0.0;



printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("quel est votre opération?");
scanf("%ld", &ChoixOperation);
printf("\n\n");

printf("quel est votre 1er nombre?");
scanf("%ld", &Nombre1);
printf("quel est votre 2er nombre?");
scanf("%ld", &Nombre2);

switch (ChoixOperation)
{
case 1:
printf("%ld + %ld = %ld", Nombre1, Nombre2, Resultat);
break;
case 2:
printf("%ld - %ld = %ld", Nombre1, Nombre2, Resultat);
break;
case 3:
printf("%ld * %ld = %ld", Nombre1, Nombre2, Resultat);
break;
case 4:
printf("%ld / %ld = %ld", Nombre1, Nombre2, Resultat);
break;
default:
printf("désolée il y a une erreur\n\n");
break;
}


system("PAUSE");
return 0;
}


j'ai juste un petit bleme : je ne trouve pas comment dire a l'ordi de trouver le résultat selon la variable ChoixOperation
Est ce que quelqu'un pourrai m'aider svp?
merci

10 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
il faut que tu fasses le calcul avant tes printf
case 1:{
Resultat=Nombre1 + Nombre2;
printf("%ld + %ld = %ld", Nombre1, Nombre2, Resultat);}
break;
case 2:{
Resultat=Nombre1-Nombre1;
printf("%ld - %ld = %ld", Nombre1, Nombre2, Resultat);}
break;
case 3:{
Resultat=Nombre1*Nombre2;
printf("%ld * %ld = %ld", Nombre1, Nombre2, Resultat);}
break;
case 4:{
Resultat=Nombre1/Nombre2;
printf("%ld / %ld = %ld", Nombre1, Nombre2, Resultat);}
break; 
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   2
 
ha ok, et c'est obligé de mettre { au début de chaque case et de la refermer a la fin de chaque printf?
on peut pas l'ouvrire au debut du switch et la refermer a la fin de ce dernier?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
oui il faut laisser les accollades du switch mais comme tu as plusieurs instructions dans tes case pour chaque case il faut que tu mettes aussi des accolades
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   2
 
ha d'accord.
une derniere question :
qu'est ce qui ne va pas avec le switch? : "switch quantity not an integer"
0

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

Posez votre question
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
il faut que tu definisses ChoixOperation comme un entier et pas un double
int ChoixOperation;

et faut changer ton scanf aussi
scanf("%d", &ChoixOperation); 
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   2
 
dans ce cas la avec un long ou un int la dévision ne marcherai pas si ?... :o
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
pour la division il te faut des double mais la tu modifies juste la variable ChoixOperation en int les autres variables (Nombre1,etc...) tu les laisses en double donc il y aura pas de problemes pour la division
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   2
 
ok merci pour tout :)
bonne soiree
0
Je reste anonyme!
 
Salut coleturner,

Je suis désolé, Myle n'a pas raison! Les accolades ne sont pas absolument nécessaires! Désolé Myle: t'as juste voulu aider, je sais... Mais il faut tout tester! Moi, ce que tu as écrit m'a beaucoup surpris, alors j'ai essayé avec, puis sans... et tadaa: Fait executer cela et tu verras:

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

int main(int argc, char *argv[])
{
long operation=0, nombre1=0.0, nombre2=0.0, resultat=0.0;

printf("\n\t=== Calculatrice ===\n\n1 = addition\n\n2 = Soustraction\n\n3 = multiplication\n\n4 = division\n\nQuelle est votre operation?\n\n");
scanf("%ld", &operation);

switch (operation)
{
case 1:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQuel est votre deuxieme nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 + nombre2;
printf("\n\n %ld + %ld = %ld", nombre1, nombre2, resultat);
break;
case 2:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQuel est votre deuxieme nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 - nombre2;
printf("\n\n %ld - %ld = %ld", nombre1, nombre2, resultat);
break;
case 3:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQuel est votre deuxieme nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 * nombre2;
printf("\n\n %ld * %ld = %ld", nombre1, nombre2, resultat);
break;
case 4:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQuel est votre deuxieme nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 / nombre2;
printf("\n\n %ld / %ld = %ld", nombre1, nombre2, resultat);
break;
default:
printf("\n\nAbruti! Vous ne savez meme pas distinguer 1, 2, 3 et 4 de %ld?!\nLevez le camp: les maths ne sont rien pour vous!\n\n", operation);
break;
}

printf("\n\nC'est la fin de ce miniprogramme!\n\nA bientot!\n\n");
system("PAUSE");
}
0
Je reste anonyme!
 
Et pour un programme un peu plus complexe, noublis pas DE DIVERSIFIER LES DIFFERENTES BRANCHES!!!

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

int main(int argc, char *argv[])
{
long operation=0, nombre1=0.0, nombre2=0.0, resultat=0.0;

printf("\n\t=== Calculatrice ===\n\n1 = addition\n\n2 = Soustraction\n\n3 = multiplication\n\n4 = division\n\nQuelle est votre operation?\n\n");
scanf("%ld", &operation);

switch (operation)
{
case 1:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQue voulez-vous ajouter a ce nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 + nombre2;
printf("\n\n %ld + %ld = %ld", nombre1, nombre2, resultat);
break;
case 2:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nQue voulez-vous retrancher a ce nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 - nombre2;
printf("\n\n %ld - %ld = %ld", nombre1, nombre2, resultat);
break;
case 3:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nPar combien voulez-vous multiplier ce nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 * nombre2;
printf("\n\n %ld * %ld = %ld", nombre1, nombre2, resultat);
break;
case 4:
printf("\n\nQuel est votre premier nombre?\n\n");
scanf("%ld", &nombre1);
printf("\n\nPar combien voulez-vous diviser ce nombre?\n\n");
scanf("%ld", &nombre2);
resultat= nombre1 / nombre2;
printf("\n\n %ld / %ld = %ld", nombre1, nombre2, resultat);
break;
default:
printf("\n\nAbruti! Vous ne savez meme pas distinguer 1, 2, 3 et 4 de %ld?!\nLevez le camp: les maths ne sont rien pour vous!\n\n", operation);
break;
}

printf("\n\nC'est la fin de ce miniprogramme!\n\nA bientot!\n\n");
system("PAUSE");
}
0