Code C calculette

Résolu/Fermé
guiguicod - 16 nov. 2007 à 20:03
 guiguicod - 17 nov. 2007 à 21:38
Bonjour,
petit souci avec ce code tout mes resultat sont egaux a 0! aidez moi svp ^^

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

int main(int argc, char *argv[])
{
long resultat = 0 , nombre1 = 0 , nombre2 = 0 , choixMenu;
printf("=== Menu ===\n\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("\nVotre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");

switch (choixMenu)
{
case 1:
printf("Vous avez choisi l'Addition .Entrez un nombre : \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
printf("\n\n%ld+%ld=%ld\n" , nombre1 , nombre2 , resultat);
resultat = nombre1 + nombre2;
break;

case 2:
printf("Vous avez choisi la Soustraction .Entrez un nombre : \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
printf("\n\n%ld-%ld=%ld\n" , nombre1 , nombre2 , resultat);
resultat = nombre1 - nombre2;
break;

case 3:
printf("Vous avez choisi la Multiplication. Entrez un nombre : \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
printf("\n\n%ld*%ld=%ld\n" , nombre1 , nombre2 , resultat);
resultat = nombre1 * nombre2;
break;

case 4:
printf("Vous avez choisi La Division. Entrez un nombre : \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
printf("\n\n%ld/%ld=%ld\n" , nombre1 , nombre2 , resultat);
resultat = nombre1 / nombre2;
break;

default:
printf("Vous n'avez pas rentre un nombre correct!\n");
break;
}

system("PAUSE");
return 0;

}
A voir également:

21 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 21:55
c'est ça que tu veux ?

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

void prog()
{
long resultat = 0 , nombre1 = 0 , nombre2 = 0 , choixMenu;
double d_resultat = 0.0 , d_nombre1 = 0.0 , d_nombre2 = 0.0;

printf("\nVotre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");

switch (choixMenu)
{
case 1:
printf("Vous avez choisi l'Addition .\n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("\n\n%ld+%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 2:
printf("Vous avez choisi la Soustraction . \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("\n\n%ld-%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 3:
printf("Vous avez choisi la Multiplication.  \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("\n\n%ld*%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 4:
printf("Vous avez choisi La Division. \n");
printf("Entrez le nombre 1 : ");
scanf("%lf", &d_nombre1);
printf("Entrez le nombre 2 : ");
scanf("%lf", &d_nombre2);
d_resultat = d_nombre1 / d_nombre2;
printf("\n\n%.2lf/%.2lf=%.2lf\n" , d_nombre1 , d_nombre2 , d_resultat);

break;

case 5:
exit(-1);

break;

default:
printf("Vous n'avez pas rentre un nombre correct!\n");

break;
}
prog();
}

int main(void)
{
printf("=== Menu ===\n\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Sortie\n");

prog();
system("PAUSE");
return 0;
}
3
j'ai oublier je voudrais revenir au debut a la fin de chaques calculs merci
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 20:37
il fallait mettre les calcul avant les printf c'est pour sa que tu avais tous le tps 0

pour revenir a la presentation du menu a la fin de chaque calcul il faut appeler la fonction main a la fin et tu rajoute un menu sortie pour quitter le programme

voici ton programme un peu modifié :


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

int main(void)
{
long resultat = 0 , nombre1 = 0 , nombre2 = 0 , choixMenu;

printf("=== Menu ===\n\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Sortie\n");
printf("\nVotre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");

switch (choixMenu)
{
case 1:
printf("Vous avez choisi l'Addition . \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("\n\n%ld+%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 2:
printf("Vous avez choisi la Soustraction  \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("\n\n%ld-%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 3:
printf("Vous avez choisi la Multiplication. \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("\n\n%ld*%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 4:
printf("Vous avez choisi La Division. \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 / nombre2;
printf("\n\n%ld/%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 5:
exit(-1);

break;

default:
printf("Vous n'avez pas rentre un nombre correct!\n");

break;
}
main();
system("PAUSE");
return 0;
}
0
Cool merci beaucoup mais je comprend pas pour metre la division sous forme decimal il faut que je declare les variantes differemment des autres servant aux calculs + - *?
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 436
16 nov. 2007 à 20:59
pour avoir les resultats de la division sous forme decimal il faut declarer d'autre variable en tant que reel et non entier

voila ce que ça donne :

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

int main(void)
{
long resultat = 0 , nombre1 = 0 , nombre2 = 0 , choixMenu;
double d_resultat = 0.0 , d_nombre1 = 0.0 , d_nombre2 = 0.0;

printf("=== Menu ===\n\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Sortie\n");
printf("\nVotre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");

switch (choixMenu)
{
case 1:
printf("Vous avez choisi l'Addition .\n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("\n\n%ld+%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 2:
printf("Vous avez choisi la Soustraction . \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("\n\n%ld-%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 3:
printf("Vous avez choisi la Multiplication.  \n");
printf("Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("\n\n%ld*%ld=%ld\n" , nombre1 , nombre2 , resultat);

break;

case 4:
printf("Vous avez choisi La Division. \n");
printf("Entrez le nombre 1 : ");
scanf("%lf", &d_nombre1);
printf("Entrez le nombre 2 : ");
scanf("%lf", &d_nombre2);
d_resultat = d_nombre1 / d_nombre2;
printf("\n\n%.2lf/%.2lf=%.2lf\n" , d_nombre1 , d_nombre2 , d_resultat);

break;

case 5:
exit(-1);

break;

default:
printf("Vous n'avez pas rentre un nombre correct!\n");

break;
}
main();
system("PAUSE");
return 0;
}
0
merci beaucoup pour ton aide j'ai une derniere question pourquoi tu met %.2lf ainsi que exit(-1);
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 21:11
comme pour un long(entier) on met %ld pour un double(reel) on met %lf et .2 c'est pour dire combien de chiffre apres la virgule d'ou %.2lf

exit(-1) sa sert a sortir du programme tout simplement
0
okok et est il possible a chaque fin de calculs revenir au debut en effacant tout ce qui a deja ete ecrit?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 21:41
si tu fais ça tu n'auras pas le temps de lire le resultat du calcul puisque ça va effacer le terminal...
0
okok mais c'est penible car a chaque fin de calcul on revois le menu et sa gache tout
ou sinon pas effacer mais revenir a la ligne comme au demarage du programme quoi
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 21:46
en faite tu veux pouvoir faire d'autre calcul mais sans reafficher le menu c'est bien ça ?
0
si mais en ne voyant plus les autres refaire comme quant on lance le programme au debut mais j'ai essayer plusieurs \n et sa ne fonctionne pas non plus
0
c'est a peux pres sa sauf qu'au lieu de metre juste votre choix je voudrais metre tout le menu au debu d'une nouvelle page
sinon ce que tu ma fait montrer c'est pas mal ^^ j'aime bien
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 22:07
en faite tu veux revenir comme au tout debut du programme ça je pense que c'est pas possible a moins de quitter puis redemarrer le programme...
0
okok en tout cas merci pour ton aide ^^
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
16 nov. 2007 à 22:18
de rien ;)
0
c'est bon j'ai reussis voila mon code mais il y a juste un probleme je peux pas calculer de grand nombres :

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

int main(void)
{
long resultat = 0 , nombre1 = 0 , nombre2 = 0 , choixMenu;
double d_resultat = 0.0 , d_nombre1 = 0.0 , d_nombre2 = 0.0;

printf(" =======CALCULETTE BY T4rlouZ'=========\n\n\n\n *************************************************\n\n");
printf(" 1. Addition\n\n");
printf(" 2. Soustraction\n\n");
printf(" 3. Multiplication\n\n");
printf(" 4. Division\n\n");
printf(" 5. Sortie\n\n");
printf("\n Votre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");

switch (choixMenu)
{
case 1:
system("CLS");
printf(" Vous avez choisi l'Addition .\n\n\n");
printf(" Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf(" Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("\n\n%ld+%ld= %ld\n\n\n\n\n" , nombre1 , nombre2 , resultat);
break;

case 2:
system("CLS");
printf(" Vous avez choisi la Soustraction . \n\n\n");
printf(" Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf(" Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("\n\n%ld-%ld= %ld\n\n\n\n\n" , nombre1 , nombre2 , resultat);
break;

case 3:
system("CLS");
printf(" Vous avez choisi la Multiplication. \n\n\n");
printf(" Entrez le nombre 1 : ");
scanf("%ld", &nombre1);
printf(" Entrez le nombre 2 : ");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("\n\n%ld*%ld= %ld\n\n\n\n\n" , nombre1 , nombre2 , resultat);
break;

case 4:
system("CLS");
printf(" Vous avez choisi La Division. \n\n\n");
printf(" Entrez le nombre 1 : ");
scanf("%lf", &d_nombre1);
printf(" Entrez le nombre 2 : ");
scanf("%lf", &d_nombre2);
d_resultat = d_nombre1 / d_nombre2;
printf("\n\n%.2lf/%.2lf= %.2lf\n\n\n\n\n" , d_nombre1 , d_nombre2 , d_resultat);
break;

case 5:
exit(-1);

break;

default:
printf(" Vous n'avez pas rentre un nombre correct!\n\n\n\n\n");

break;

}
main();
system("PAUSE");
return 0;
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
17 nov. 2007 à 20:27
tu veux dire quoi par grand nombres ?
0
et bien 1111111111+1111111111=-2072745074 -_-'
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
17 nov. 2007 à 20:37
avec un long tu peux aller de -2 147 483 647 jusqu'a 2 147 483 647 donc faut que le resultat ce trouve entre les deux ;)
0