Petit bleme dans un programme de calculette

Résolu/Fermé
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 - 17 mars 2008 à 13:31
 Je reste anonyme! - 4 avril 2009 à 13:57
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 435
17 mars 2008 à 14:30
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 16:02
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 435
17 mars 2008 à 17:04
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 18:18
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 435
17 mars 2008 à 19:57
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 21:25
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 435
17 mars 2008 à 21:46
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 22:19
ok merci pour tout :)
bonne soiree
0
Je reste anonyme!
4 avril 2009 à 13:52
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!
4 avril 2009 à 13:57
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