Probleme en C++

Barenaked lady -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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. greg49 Messages postés 154 Statut Membre 8
     
    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
  2. Malinois Messages postés 6 Statut Membre
     
    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
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  4. Barenaked lady
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. profiler_21 Messages postés 6 Statut Membre 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
  7. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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