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

  • Votes
  • Date
  • Date décroissante
  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
    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
      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.
        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 .
          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.
            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.