Se connecter / S'enregistrer
Votre question

Problème de calculatrice

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
3 Juillet 2008 16:55:22

Bonjour,

En ce moment j'essaie d'éllaborer une calculatrice aux fonctions basiques ( + , - , * , / ) cependant lors de l'éxecution du programme on me trouve toujours le résultat 0.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int choixOperation = 0, ApremierNombre = 0, AsecondNombre = 0, Aresultat = 0,
  7. DpremierNombre = 0, DsecondNombre = 0, Dresultat = 0,
  8. MpremierNombre = 0, MsecondNombre = 0, Mresultat = 0,
  9. SpremierNombre = 0, SsecondNombre = 0, Sresultat = 0;
  10.  
  11. Aresultat = ApremierNombre + AsecondNombre;
  12. Dresultat = DpremierNombre / DsecondNombre;
  13. Mresultat = MpremierNombre * MsecondNombre;
  14. Sresultat = SpremierNombre - SsecondNombre;
  15.  
  16. printf("\n\t== Calculatrice ==\n\n");
  17. printf("1. Addition\n");
  18. printf("2. Division\n");
  19. printf("3. Multiplication\n");
  20. printf("4. Soustraction\n");
  21. printf("\n\n");
  22. printf("\tVotre choix : ");
  23. scanf("%ld", &choixOperation);
  24.  
  25. switch(choixOperation)
  26. {
  27. case 1 :
  28. printf("\nEntrez votre premier nombre a additionner : ");
  29. scanf("%ld", &ApremierNombre);
  30. printf("\n\nEntrez votre second nombre a additionner : ");
  31. scanf("%ld", &AsecondNombre);
  32. printf("\n\nVoici le resultat de votre addition : %ld\n", Aresultat);
  33. break;
  34. case 2 :
  35. printf("\nEntrez votre premier nombre a diviser : ");
  36. scanf("%ld", &DpremierNombre);
  37. printf("\n\nEntrez votre second nombre a diviser : ");
  38. scanf("%ld", &DsecondNombre);
  39. printf("\n\nVoici le resultat de votre divison : %ld\n", Dresultat);
  40. break;
  41. case 3 :
  42. printf("\nEntrez votre premier nombre a multiplier : ");
  43. scanf("%ld", &MpremierNombre);
  44. printf("\n\nEntrez votre second nombre a multiplier : ");
  45. scanf("%ld", &MsecondNombre);
  46. printf("\n\nVoici le resultat de votre multiplication : %ld\n", Mresultat);
  47. break;
  48. case 4 :
  49. printf("\nEntrez votre premier nombre a soustraire : ");
  50. scanf("%ld", &SpremierNombre);
  51. printf("\n\nEntrez votre second nombre a soustraire : ");
  52. scanf("%ld", &SsecondNombre);
  53. printf("\n\nVoici le resultat de votre soustraction : %ld\n", Sresultat);
  54. break;
  55. default :
  56. printf("\n\nDesole bah ya po... Allez ailleur ! lol");
  57. break;
  58. }
  59.  
  60. return 0;
  61.  
  62. }


Où se situe le problème?

Merci.

Autres pages sur : probleme calculatrice

3 Juillet 2008 17:09:58

Oula, va revoir tout de suite tes cours de c ^^.

toi tu fait:

  1. # Aresultat = ApremierNombre + AsecondNombre;
  2. # Dresultat = DpremierNombre / DsecondNombre;
  3. # Mresultat = MpremierNombre * MsecondNombre;
  4. # Sresultat = SpremierNombre - SsecondNombre;
tu dit donc que Dresultat = 0 / 0
Mresultat = 0 * 0
Sresultat = 0 - 0

ensuite tu demandes à l'utilisateur des nombres puis tu affiche Dresultat,Mresultat ou Sresultat qui sont égal à zéro ^^. Il faut mettre les calcul dans le switch et non pas au début comment veux-tu que ton programme fasse une opération sans le calcul
3 Juillet 2008 17:43:54

Merci de m'avoir répondu quarty, en fait je viens de m'y mettre avant hier au langage C, donc pour un début c'est pas trop ça :(  ^^ ...

Sinon, j'ai essayé de mettre les calculs à l'intérieur du switch mais ya un soucis :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int choixOperation = 0, ApremierNombre = 0, AsecondNombre = 0, Aresultat = 0,
  7. DpremierNombre = 0, DsecondNombre = 0, Dresultat = 0,
  8. MpremierNombre = 0, MsecondNombre = 0, Mresultat = 0,
  9. SpremierNombre = 0, SsecondNombre = 0, Sresultat = 0;
  10.  
  11. printf("\n\t== Calculatrice ==\n\n");
  12. printf("1. Addition\n");
  13. printf("2. Division\n");
  14. printf("3. Multiplication\n");
  15. printf("4. Soustraction\n");
  16. printf("\n\n");
  17. printf("\tVotre choix : ");
  18. scanf("%ld", &choixOperation);
  19.  
  20. switch(choixOperation)
  21. {
  22. case 1 :
  23. Aresultat = ApremierNombre + AsecondNombre;
  24. printf("\nEntrez votre premier nombre a additionner : ");
  25. scanf("%ld", &ApremierNombre);
  26. printf("\n\nEntrez votre second nombre a additionner : ");
  27. scanf("%ld", &AsecondNombre);
  28. printf("\n\nVoici le resultat de votre addition %ld + %ld = %ld", &ApremierNombre, &AsecondNombre, &Aresultat);
  29. break;
  30. case 2 :
  31. Dresultat = DpremierNombre / DsecondNombre;
  32. printf("\nEntrez votre premier nombre a diviser : ");
  33. scanf("%ld", &DpremierNombre);
  34. printf("\n\nEntrez votre second nombre a diviser : ");
  35. scanf("%ld", &DsecondNombre);
  36. printf("\n\nVoici le resultat de votre divison : ");
  37. printf("%ld / %ld = %ld", &DpremierNombre, &DsecondNombre, &Dresultat);
  38. break;
  39. case 3 :
  40. Mresultat = MpremierNombre * MsecondNombre;
  41. printf("\nEntrez votre premier nombre a multiplier : ");
  42. scanf("%ld", &MpremierNombre);
  43. printf("\n\nEntrez votre second nombre a multiplier : ");
  44. scanf("%ld", &MsecondNombre);
  45. printf("\n\nVoici le resultat de votre multiplication : ");
  46. printf("%ld * %ld = %ld", &MpremierNombre, &MsecondNombre, &Mresultat);
  47. break;
  48. case 4 :
  49. Sresultat = SpremierNombre - SsecondNombre;
  50. printf("\nEntrez votre premier nombre a soustraire : ");
  51. scanf("%ld", &SpremierNombre);
  52. printf("\n\nEntrez votre second nombre a soustraire : ");
  53. scanf("%ld", &SsecondNombre);
  54. printf("\n\nVoici le resultat de votre soustraction : ");
  55. printf("%ld - %ld = %ld", &SpremierNombre, &SsecondNombre, &Sresultat);
  56. break;
  57. default :
  58. printf("\n\nDesole bah ya po... Allez ailleur ! lol");
  59. break;
  60. }
  61.  
  62. return 0;
  63.  
  64. }


Tu pourrais me donner une correction stp ? ^^
Contenus similaires
3 Juillet 2008 19:31:53

Je te fait une correction rapide, normalement tu devrais mettre ca dans des fonction pour faire plus joli.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int choixOperation = 0, ApremierNombre = 0, AsecondNombre = 0, Aresultat = 0,
  7. DpremierNombre = 0, DsecondNombre = 0, Dresultat = 0,
  8. MpremierNombre = 0, MsecondNombre = 0, Mresultat = 0,
  9. SpremierNombre = 0, SsecondNombre = 0, Sresultat = 0;
  10.  
  11. printf("\n\t== Calculatrice ==\n\n" );
  12. printf("1. Addition\n" );
  13. printf("2. Division\n" );
  14. printf("3. Multiplication\n" );
  15. printf("4. Soustraction\n" );
  16. printf("\n\n" );
  17. printf("\tVotre choix : " );
  18. scanf("%ld", &choixOperation);
  19.  
  20. switch(choixOperation)
  21. {
  22. case 1 :
  23.  
  24. printf("\nEntrez votre premier nombre a additionner : " );
  25. scanf("%ld", &ApremierNombre);
  26. printf("\n\nEntrez votre second nombre a additionner : " );
  27. scanf("%ld", &AsecondNombre);
  28. Aresultat = ApremierNombre + AsecondNombre;
  29. printf("\n\nVoici le resultat de votre addition %ld + %ld = %ld", &ApremierNombre, &AsecondNombre, &Aresultat);
  30. break;
  31. case 2 :
  32.  
  33. printf("\nEntrez votre premier nombre a diviser : " );
  34. scanf("%ld", &DpremierNombre);
  35. printf("\n\nEntrez votre second nombre a diviser : " );
  36. scanf("%ld", &DsecondNombre);
  37. Dresultat = DpremierNombre / DsecondNombre;
  38. printf("\n\nVoici le resultat de votre divison : " );
  39. printf("%ld / %ld = %ld", &DpremierNombre, &DsecondNombre, &Dresultat);
  40. break;
  41. case 3 :
  42.  
  43. printf("\nEntrez votre premier nombre a multiplier : " );
  44. scanf("%ld", &MpremierNombre);
  45. printf("\n\nEntrez votre second nombre a multiplier : " );
  46. scanf("%ld", &MsecondNombre);
  47. Mresultat = MpremierNombre * MsecondNombre;
  48. printf("\n\nVoici le resultat de votre multiplication : " );
  49. printf("%ld * %ld = %ld", &MpremierNombre, &MsecondNombre, &Mresultat);
  50. break;
  51. case 4 :
  52.  
  53. printf("\nEntrez votre premier nombre a soustraire : " );
  54. scanf("%ld", &SpremierNombre);
  55. printf("\n\nEntrez votre second nombre a soustraire : " );
  56. scanf("%ld", &SsecondNombre);
  57. Sresultat = SpremierNombre - SsecondNombre;
  58. printf("\n\nVoici le resultat de votre soustraction : " );
  59. printf("%ld - %ld = %ld", &SpremierNombre, &SsecondNombre, &Sresultat);
  60. break;
  61. default :
  62. printf("\n\nDesole bah ya po... Allez ailleur ! lol" );
  63. break;
  64. }
  65.  
  66. return 0;
  67.  
  68. }


Ca devrait marcher.
3 Juillet 2008 19:53:25

Eh bien, le résultat est le même, il y a toujours un résultat bizarre qui s'affiche à la fin comme : 299855 + 258746 = 268546.

Je ne sais pas quel(s) changement(s) faut faire...
3 Juillet 2008 20:03:17

Oups un petit oublie de ma part ^^

Quand tu fait printf &nom_de_la_variable ca affiche l'adresse ou est contennu la variable donc les chiffres étaient bon. Voila un code qui devrait fonctionner

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int choixOperation = 0, ApremierNombre = 0, AsecondNombre = 0, Aresultat = 0,
  7. DpremierNombre = 0, DsecondNombre = 0, Dresultat = 0,
  8. MpremierNombre = 0, MsecondNombre = 0, Mresultat = 0,
  9. SpremierNombre = 0, SsecondNombre = 0, Sresultat = 0;
  10. while(1)
  11. {
  12. printf("\n\t== Calculatrice ==\n\n" );
  13. printf("1. Addition\n" );
  14. printf("2. Division\n" );
  15. printf("3. Multiplication\n" );
  16. printf("4. Soustraction\n" );
  17. printf("\n\n" );
  18. printf("\tVotre choix : " );
  19. scanf("%ld", &choixOperation);
  20.  
  21. switch(choixOperation)
  22. {
  23. case 1 :
  24.  
  25. printf("\nEntrez votre premier nombre a additionner : " );
  26. scanf("%ld", &ApremierNombre);
  27. printf("\n\nEntrez votre second nombre a additionner : " );
  28. scanf("%ld", &AsecondNombre);
  29. Aresultat = ApremierNombre + AsecondNombre;
  30. printf("\n\nVoici le resultat de votre addition %ld + %ld = %ld", ApremierNombre, AsecondNombre, Aresultat);
  31. break;
  32. case 2 :
  33.  
  34. printf("\nEntrez votre premier nombre a diviser : " );
  35. scanf("%ld", &DpremierNombre);
  36. printf("\n\nEntrez votre second nombre a diviser : " );
  37. scanf("%ld", &DsecondNombre);
  38. Dresultat = DpremierNombre / DsecondNombre;
  39. printf("\n\nVoici le resultat de votre divison : " );
  40. printf("%ld / %ld = %ld", DpremierNombre, DsecondNombre, Dresultat);
  41. break;
  42. case 3 :
  43.  
  44. printf("\nEntrez votre premier nombre a multiplier : " );
  45. scanf("%ld", &MpremierNombre);
  46. printf("\n\nEntrez votre second nombre a multiplier : " );
  47. scanf("%ld", &MsecondNombre);
  48. Mresultat = MpremierNombre * MsecondNombre;
  49. printf("\n\nVoici le resultat de votre multiplication : " );
  50. printf("%ld * %ld = %ld", MpremierNombre, MsecondNombre, Mresultat);
  51. break;
  52. case 4 :
  53.  
  54. printf("\nEntrez votre premier nombre a soustraire : " );
  55. scanf("%ld", &SpremierNombre);
  56. printf("\n\nEntrez votre second nombre a soustraire : " );
  57. scanf("%ld", &SsecondNombre);
  58. Sresultat = SpremierNombre - SsecondNombre;
  59. printf("\n\nVoici le resultat de votre soustraction : " );
  60. printf("%ld - %ld = %ld", SpremierNombre, SsecondNombre, Sresultat);
  61. break;
  62. default :
  63. printf("\n\nDesole bah ya po... Allez ailleur ! lol" );
  64. break;
  65. }
  66. }
  67. return 0;
  68.  
  69. }
3 Juillet 2008 20:10:58

remplace
printf("\n\nVoici le resultat de votre addition %ld + %ld = %ld", &ApremierNombre, &AsecondNombre, &Aresultat);
par
printf("\n\nVoici le resultat de votre addition %ld + %ld = %ld", ApremierNombre, AsecondNombre, Aresultat);
sinon tu n'affiches pas les valeurs mais les adresses mémoires ...
3 Juillet 2008 20:20:25

Tu as 7 minutes de retard :p 
3 Juillet 2008 22:35:52

Bonsoir,

Merci pour vos réponses, cette fois-ci le code fonctionne...
En plus, je viens de voir les boucles avec <while>, dans ce cas il est très utile :D 
Cependant, pour les divisions, le programme dysfonctionne car le type de variable est <int>, je l'ai donc remplacé lors de la déclaration des variables <int> par <double> et tout les <%ld> par <%lf> mais ça ne marche pas...

HELP please :D  ^^
a b L Programmation
3 Juillet 2008 22:45:33

"[...] mais ça ne marche pas..."
Si tu cherches une réponse, il faut donner les détails.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS