Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme avec une calculatrice

    23 août 2006 à 1:22:27

    bonjour je vous pose cette question car j'ai un probleme que je n'arrive pas a resoudre j'ai programmé une calculatrice plutot basique(je débute) son code est:


    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {
    long signe, nombre1 = 0, nombre2 = 0, resultat;
    printf("entrez nombre 1 :");
    scanf("%ld", &nombre1);
    printf("entrez le signe\n\n");
    printf("1=+\n");
    printf("2=-\n");
    printf("3=*\n");
    printf("4=/\n");

    scanf("%ld", &signe);
    printf("\n");
    switch (signe)
    {
    case 1:

    printf("entrez nombre 2 :");
    scanf("%ld", &nombre2);

    resultat = nombre1 + nombre2;

    printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
    break;
    case 2:

    printf("entrez nombre 2 :");
    scanf("%ld", &nombre2);

    resultat = nombre1 - nombre2;

    printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat);
    break;
    case 3:

    printf("entrez nombre 2 :");
    scanf("%ld", &nombre2);

    resultat = nombre1 * nombre2;

    printf("%ld * %ld = %ld\n", nombre1, nombre2, resultat);
    break;
    case 4:

    printf("entrez nombre 2 :");
    scanf("%ld", &nombre2);

    resultat = nombre1 / nombre2;

    printf("%ld / %ld = %ld\n", nombre1, nombre2, resultat);
    printf("elle est pas cool cette calculette???????\n");
    break;
    default:
    printf("a croire que tu sait pas lire (tu as que 4 choix)");
    break;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
    }

    seulement voila mon probleme est que j'aimerai que a la place de devoir rentrer 1 pour effectuer une addition, 2 pour une soustraction, 3 pour une multiplication et 4 pour une division je puisse rentrer directement +,-,* ou /
    (du genre entré le nombre 1 puis entré le signe et enfin entrée le nombre 2)j'ai essayé plusieurs possibilitée mais a chaque fois je ne pouvai pas le compiller. je vous remercie d'avance pour toute l'aide que vous pourrai me fournir.
    • Partager sur Facebook
    • Partager sur Twitter
      23 août 2006 à 5:01:59

      c'est pas lisible sans les balises code!

      pour la question que tu poses, ce dont tu as besoin, c'est le code ascii correspondant aux syboles que tu veux

      chaque caractere que tu peux ecrire possede un code ascii (meme un biip du buzzer est representé par un code ascii)
      si c'est pas assez, tu as la table unicode, mais te fais pas chier avec ça pour le moment

      sinon, pour ne pas avoir à chercher les equivalences, tu fais
      case '*': ce qui revient exactement au meme
      etc
      mais je ne sais pas tres bien comment marche scanf(), donc jà, je seche, ça peut etre un truc plus barbare que ça
      • Partager sur Facebook
      • Partager sur Twitter
        23 août 2006 à 7:14:59

        Tu compile en C ou en C++ ?
        Parce que en C on n'utilise pas cstdlib et iostream
        Et si c'est du C++, on n'utilise pas scanf() et printf().
        Donc dans les deux cas ton programme ne marcheras pas.
        • Partager sur Facebook
        • Partager sur Twitter
          23 août 2006 à 9:22:24

          Tu as mis du code C dans un programme C++. Ca ne peut donc pas marcher.
          • Partager sur Facebook
          • Partager sur Twitter
            23 août 2006 à 11:59:10

            Salut

            comme pour l'instant m@teo eil nous apprend le C et que la plupart du programme est en C, on va garder le C et on va supprimer le C++ :

            //ça tu supprime et tu remplace par les librairies C
            #include <cstdlib>
            #include <iostream>
            //ce qui donne :
            #include <stdio.h>
            #include <stdlib.h>
            //et voila

            using namespace std;//ça tu supprime c'est pas du C (a mon avis)

            int main(int argc, char *argv[])
            {
            long signe, nombre1 = 0, nombre2 = 0, resultat;
            printf("entrez nombre 1 :");
            scanf("%ld", &nombre1);
            printf("entrez le signe\n\n");
            printf("1=+\n");
            printf("2=-\n");
            printf("3=*\n");
            printf("4=/\n");

            scanf("%ld", &signe);
            printf("\n");
            switch (signe)
            {
            case 1:

            printf("entrez nombre 2 :");
            scanf("%ld", &nombre2);

            resultat = nombre1 + nombre2;

            printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
            break;
            case 2:

            printf("entrez nombre 2 :");
            scanf("%ld", &nombre2);

            resultat = nombre1 - nombre2;

            printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat);
            break;
            case 3:

            printf("entrez nombre 2 :");
            scanf("%ld", &nombre2);

            resultat = nombre1 * nombre2;

            printf("%ld * %ld = %ld\n", nombre1, nombre2, resultat);
            break;
            case 4:

            printf("entrez nombre 2 :");
            scanf("%ld", &nombre2);

            resultat = nombre1 / nombre2;

            printf("%ld / %ld = %ld\n", nombre1, nombre2, resultat);
            printf("elle est pas cool cette calculette???????\n");
            break;
            default:
            printf("a croire que tu sait pas lire (tu as que 4 choix)");
            break;
            }
            system("PAUSE");
            return EXIT_SUCCESS;
            }


            Voila je pense que ça peut marcher la !

            PS pas main.cpp hein, main.c ! :D
            • Partager sur Facebook
            • Partager sur Twitter
              23 août 2006 à 12:13:27

              Voilà (si j'ai bien compris ce que tu voulais faire !) :
              #include <stdlib.h>
              #include <stdio.h>

              int main (int argc, char **argv)
              {
                  long nb1 = 0, nb2 = 0, res = 0;
                  char signe = 0;
                  int error = 0;
                 
                  printf ("\t--- Bienvenue dans la calculatrice ---\n\n");
                  printf ("Entrez le 1er nombre de l'operation : ");
                  scanf ("%ld", &nb1);
                  printf ("\nEntrez le signe de l'operation (+, -, /, *) : ");
                  scanf ("%c", &signe);
                  printf ("\nEntrez le second nombre de l'operation : ");
                  scanf ("%ld", &nb2);
                 
                  switch (signe)
                  {
                      case '+' :
                          res = nb1 + nb2;
                          break;
                      case '-' :
                          res = nb1 - nb2;
                          break;
                      case '*' :
                          res = nb1*nb2;
                          break;
                      case '/' :
                          if (nb2 != 0)
                              res = nb1/nb2;
                          else
                              error = 1;
                          break;
                      default :
                          error = 1;
                          break;
                  }
                 
                  if (!error)
                      printf ("%ld %c %ld = %ld\n\n", nb1, signe, nb2, res);
                  else
                      printf ("Une erreur est survenu, le programme va quitter ...\n\n");
                     
                  getchar ();
                 
                  return EXIT_SUCCESS;
              }
              • Partager sur Facebook
              • Partager sur Twitter
                23 août 2006 à 12:34:17

                euuu qui as dit que mélanger du C et du C++ ne fonctionnais pas ?
                Si si, ça fonctionne très bien (même si c'est pas propre de mélanger ... donc on évite de le faire) mais à une seule condition, c'est que ce soit un projet C++. Le C++ est une évolution du C, donc ce que sais faire l'ancienne version la nouvelle sait le faire. Par contre, l'ancienne version ne sais pas faire les nouveauté de la nouvelle version (c'est normal vous me direz ...)
                • Partager sur Facebook
                • Partager sur Twitter
                  23 août 2006 à 16:11:34

                  j'ai fait le programme en c++(avec dev c++) mais meme si j'ai utiliser un code c sa marche tres bien(avec ce code telle quel elle marche super bien)le truc que j'avais pas compris c'etait que pour rentrer un signe je devais mette:
                  scanf %c et pas scanf %ld je vais remanier mon programme voir si ils marche je vous recontacte si sa plante toujours
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 août 2006 à 17:10:54

                    En c++, t'a beaucoup plus simple :
                    cin >> signe; //pour le signe
                    cin >> nb1 //pour un des nombres


                    En fait t'as pas à préciser quel type c'est pour les entrées/sorties.
                    (C'est pas ça qu'on appelle surchage d'opérateur ? Si je me trompe corrigez moi je n'ai que quelques base en c++)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 août 2006 à 1:27:09

                      j'ai essayer en modifiant scanf ld et en le remplacant par scanf c et j'ai mis '+'a la place de 1 '-' a la place de 2... mais sa marche toujours pas sa me dit entrée nombre1 puis sa termine le programme en me disant que j'ai fait une erreur
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 août 2006 à 14:11:11

                        A tous les coups t'as oublié le & devant nombre1 dans scanf ! ^^


                        Edit : un petit problème de '\n' dans le buffer dans mon code !

                        Tiens repère cette partie dans le code que je t'avais donner et rajoute la ligne manquante :
                        printf ("\t--- Bienvenue dans la calculatrice ---\n\n");
                            printf ("Entrez le 1er nombre de l'operation : ");
                            scanf ("%ld", &nb1);
                            while (getchar () != '\n'); //l'entrée pour le signe était '\n' d'où pb !
                            printf ("\nEntrez le signe de l'operation (+, -, /, *) : ");
                            scanf ("%c", &signe);
                        /*Au besoin rejoute la même ligne ici*/
                            printf ("\nEntrez le second nombre de l'operation : ");
                            scanf ("%ld", &nb2);


                        Bon je sais pas si c'est très propre comme vidage de buffer mais ça marche !
                        • Partager sur Facebook
                        • Partager sur Twitter

                        probleme avec une calculatrice

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown