Tom's Guide > Forum > Programmation > Problème de calculatrice

Problème de calculatrice

Forum Programmation : Problème de calculatrice

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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.

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



Où se situe le problème?

Merci.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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

toi tu fait:

Code :
  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

Répondre à quarty

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 :

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



Tu pourrais me donner une correction stp ? ^^

Répondre à Sephiroth_Ange

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

Code :
  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.

Répondre à quarty

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...

Répondre à Sephiroth_Ange

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

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

Répondre à quarty

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 ...

Répondre à chrisz

Tu as 7 minutes de retard :p

Répondre à quarty

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 ^^

Répondre à Sephiroth_Ange

"[...] mais ça ne marche pas..."
Si tu cherches une réponse, il faut donner les détails.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Problème de calculatrice
Aller à :

Il y a 1527 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens