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