Probleme en C++

Bonsoir chers amis ,

Je voudrais creer un programme :
---Qui te demande de donner 3 entiers , qui les lis et
---qui ne les saisit que si les charactères entrés sont effectivement des entiers, puuis
---qui fait la somme de ces entiers entre eux !

J'ai essayer d'initialiser mes trois nombres comme des entiers et j'ai fait le programme , mais lorsque je donne des lettres comme 'a' 'b' ou 'c' , mon programme plante !
je ne sais plus que faire ,une personne bien intentionnée m'a parlé vaguement des codes asci (lire aski), mais je ne sais pas comment les utiliser !

Au secours à l'aide !

6 réponses

  1. salut,

    il faut tester ce que tu saisi dans des conditions ( if...), tou ce qui est tapé au clavier correspond à un caractère ASCII (tape table ascii dans google) , tu test pour savoir si ce qui est tapé est bien ce que tu veu et non pas des lettre où autres caractères!

    Voili, voilou
    0
    1. Essaye de rajouter ca comme fonction

      int saisie ( int x){
      do{
      x=getchar();
      }while (x <48 || x>57);
      return x;
      }

      et quand tu l'appel dans ton main tu remplace x par ta variable
      0
      1. Contributeur
        Malinois, si tu fait ça, tu te contente d'avoir un entier plus petit que 10, et tu renvoie une valeur fausse.
        moins, je dirai plutot
        #include <string>
        int saisie()
        {
        string c;
        cin>>c;
        for (int i=0;i<c.size();i++)
        if (c[i]<48 | c[i] >57)return saisie(); // recommence la fonction
        return strtol(c.c_str());
        }
        une fois tes entier recuperer tu n'as plus qu' ales additionner.
        0
        1. Bonjour les amis (es) ,

          Merci pour votre aide , spécialement Char Sniper et Malinois , mais ..., je ne sais pas comment récuperer mes 3 entiers dans vos fonctions ,
          en fait comment devrait-je faire pour insérer les fonctions que vous avez créer dans le "main()" ?

          Vous l'aurez compris , nom bagage en programmation est faible !
          Tout en espérant vous relire bientôt ,Merci encore de votre aide .
          0
          1. char snipeur , je me suis permi de fair une petite modification dans ton program pour ladapté avec le main.
            mais apart cela je suis plus dac avec toi k avec Malinois.
            voila mais vu kje ne suis pas tres calé en c++, je ne c pas si il arriv a reconnaitre le include <string> ou il faut prendre c dernier comme des char*.

            #include <string>
            int saisie(string c)
            {
            for (int i=0;i<c.size();i++)
            if (c[i]<48 | c[i] >57)return saisie(); // recommence la fonction
            return strtol(c.c_str());
            }

            void main()
            {String a;
            cout<<"enter les trois nombres";
            cin>>a;
            cin>>b;
            cin>>c;
            int nb1=saisie(a);
            int nb2=saisie(a);
            int nb3=saisie(a);
            cout<<"la somme des trois nombre est : "<<nb1+nb2+nb3<<endl;
            }

            beh ecoute Barenaked lady tu nous tiens o courant . j espere que ca marcheran.
            0
            1. Contributeur
              En reprenant ma fonction (tel quel)
              int main()
              {
              int nb1=saisie();
              int nb2=saisie();
              int nb3=saisie();
              ...
              return 0;
              }
              aucun bp pour le include ! string fait partie de la STL.
              0