Calculatrice C en mode console

ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009 - 23 avril 2008 à 22:34
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 24 avril 2008 à 16:11
Bonjour ou bonsoir, c'est selon.

Voilà, je suis, comme qui dirait, débutant dans l'apprentissage du C/C++. Et j'ai un problème (nan sans blague?).
En fait, voilà mon code (j'ai pas précisé il s'agit d'une caltos en mode console):

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




int main(int argc, char *argv[])
{
    long ChoixMenu= 0;
   
    printf ("--CALCULATRICE--\n\n");
    printf ("1. Addition\n");
    printf ("2. Soustraction\n");
    printf ("3. Multiplication\n");
    printf ("4. Division\n\n");
    printf ("Veuillez selectionner votre choix: \n");
    scanf ("%ld", &ChoixMenu);
   
    printf ("\n");
   
    double Nombre1=0;
    double Nombre2=0;
    long Resultat=0;
   
    switch (ChoixMenu)
    {case 1:
          printf ("Veuillez entrer le premier nombre: \n");
          scanf ("%lf", &Nombre1);
          printf ("Veuillez entrer le deuxieme nombre: \n");
          scanf ("%lf", &Nombre2);
          Resultat = Nombre1 + Nombre2;
          printf ("Le resultat est donc: \n%lf + %lf = %ld \n", Nombre1, Nombre2, Resultat);
          break;
    case 2:
         printf ("Veuillez entrer le premier nombre: \n");
          scanf ("%lf", &Nombre1);
          printf ("Veuillez entrer le deuxieme nombre: \n");
          scanf ("%lf", &Nombre2);
          Resultat = Nombre1 - Nombre2;
          printf ("Le resultat est donc: \n%lf - %lf = %ld \n", Nombre1, Nombre2, Resultat);
          break;
    case 3:
         printf ("Veuillez entrer le premier nombre: \n");
          scanf ("%lf", &Nombre1);
          printf ("Veuillez entrer le deuxieme nombre: \n");
          scanf ("%lf", &Nombre2);
          Resultat = Nombre1 * Nombre2;
          printf ("Le resultat est donc: \n%lf * %lf = %ld \n", Nombre1, Nombre2, Resultat);
          break;
    case 4:
          printf ("Veuillez entrer le premier nombre: (format 0.00)\n");
          scanf ("%lf", &Nombre1);
          printf ("Veuillez entrer le deuxieme nombre: (format O.OO)\n");
          scanf ("%lf", &Nombre2);
          Resultat = Nombre1 / Nombre2;
          printf ("Le resultat est donc: \n%lf / %lf = %ld \n", Nombre1, Nombre2, Resultat);
          break;
    default:
            printf ("Votre choix n'est pas correct.  \n");
            break;
        
  } 
   
  system("PAUSE"); 
  return 0;
}

Déjà j'ai un souci au niveau de la déclaration de mes nombre1 et nombre2. Là comme vous le voyez, si je les déclare en tant que double ca passe sauf que dans mon résultat il m'affiche un truc du genre 2,00000 * 2,00000 = 4
Si j'essaye de les déclarer en tant que n'importe quoi d'autre, la ca marche pu du tout. Genre je veux 2*2, il m'affiche 0,4867467576784*0,0000000001 = 4,5980
Logique hin?

Enfin voila déjà c'est un premier souci. Ensuite j'aimerai permettre à l'utilisateur de revenir au Menu, sauf qu'on m'a dit que utiliser le goto c'était vraiment pas recommandé du tout. Donc je bloque.

Enfin une fois que j'aurai réussi ca, je pourrais m'attaquer à le faire en interface graphique, et la question que je me pose c'est est ce que mon code la, il va servir pour ca ou pas du tout ?

Merci à tous pour votre aide :)

Niko

2 réponses

cephalic Messages postés 38 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 25 avril 2008
24 avril 2008 à 09:59
Bonjour les doubles sont des nombres a virgules et les long des entiers.
vérifie bien les types de tes printf quand tu affiches si tu as mis 2 et 2 tes variables contiennent 2 et 2 mais tu as du te tromper sur l'affichage.

Pour revenir au menu tu peux mettre ton code dans un while(1)
a la fin de chaque calcul tu reviendras au menu.
Les goto sont deconseillés c'est vrai surtout pour un débutant.

Pour la partie graphique je ne sais pas si ton algo tel quel te servira sa dépend quel librairie graphique tu utilise.
Mais c'est pâs bien compliquer à réécrire
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
24 avril 2008 à 16:11
pourquoi lf et pas f dans ton printf ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0