programme en C++
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

programme en C++



  1. #1
    invitee5fedd72

    programme en C++


    ------

    Bonjour
    Dans un programme en C++, j'ai fait une boucle dans laquelle l'utilisateur saisi des chiffres. Ces derniers sont stockés dans une variable de type int.
    Quand je tape une lettre au lieu de taper un chiffre le programme par dans une boucle de "bougage" sans arret.
    Est ce que vous avez une idée permettant de vérifier la saisi au clavier, c-a-d qui permet de ne pas prendre en considération de la saisi si je tape un caractère a la place d'un entier.

    Merci d'avance

    -----

  2. #2
    invitec698e508

    Re : programme en C++

    bonjours, regarde la je pense que tu auras plus de reponse ou sinon tu peux poser ta question :
    http://www.siteduzero.com/forum-81-237-langage-c.html

    cordialement laurent.

  3. #3
    Gunman

    Re : programme en C++

    Si tu mettais ton code, ce serait peut-être plus pratique de t'aider...

    Néanmoins, il te suffit de faire un test dans ta boucle juste après la saisie : si le caractère entré est un chiffre, tu assignes ton int, sinon tu ne fais rien et tu relances ta boucle.

  4. #4
    invitee5fedd72

    Re : programme en C++

    voici un exemple qui correspond à mon programme:
    #include <iostream>
    using namespace std;

    int main ()
    {
    int a;
    do
    {
    cout<<"donner un chiffre entre 0 et 9: "<<endl;
    cin>>a;
    if(a==3) cout<<"le choix est sauvegarde"<<endl;
    }while(a>0 && a<10);
    return 1;
    }
    En executant ce programme:
    Je tape par exemple 4
    le programme entre dans la boucle et il me demande de taper un entier
    Dans ce cas, quand je tape "d" par exemple, le prog entre dans une boucle sans fin.

    Merci d'avance

  5. A voir en vidéo sur Futura
  6. #5
    Flyingsquirrel

    Re : programme en C++

    Salut

    Première remarque : tu veux que le programme boucle si ce qui est lu n'est pas un entier soit si (a<0 ou a>10) et pas si (a>0 et a<10).

    Ensuite, quand tu effectues cin>>a et que l'utilisateur ne rentre pas un entier, l'affectation ne se fait pas, ce que l'utilisateur a entré reste dans le buffer clavier et sera de nouveau renvoyé par cin lors de sa prochaine utilisation.
    L'instruction while(a<0 || a>10); fait boucler le programme, on arrive à cin>>a : ce qui a été saisie la première fois est toujours dans le buffer clavier, l'affectation échoue de nouveau et ainsi de suite...

    Pour que le programme fonctionne il faut vider le buffer clavier lors d'une saisie erronée (ou avant chaque saisie) :

    Code:
    #include <iostream>
    #include <limits> //constante numeric_limits
    using namespace std;
    
    int main ()
    {
       int a;
       do
       {
          cout<<"donner un chiffre entre 0 et 9: "<<endl;
    
          //on vide le buffer clavier :
          cin.clear();
          cin.ignore( std::numeric_limits<streamsize>::max(), '\n' );
    
          cin>>a;
          if(3==a)
             cout<<"le choix est sauvegarde"<<endl;
       }
       while(a<0 || a>10);
       return 1;
    }

  7. #6
    invitee5fedd72

    Re : programme en C++

    merci pour la réponse
    Cette solution ne regle pas mon problème. Parce qu'on cas de saisi eroné, le compilateur garde la valeur précedante au lieu de demander de faire une autre saisi

    Merci

  8. #7
    Flyingsquirrel

    Re : programme en C++

    Oups, j'ai modifié l'ordre des instructions sans vérifier le fonctionnement. La version suivante est correcte :
    Code:
    #include <iostream>
    #include <limits> //constante numeric_limits
    using namespace std;
    
    int main ()
    {
       int a;
       do
       {
          cout<<"donner un chiffre entre 0 et 9: "<<endl;
          cin>>a;
    
          //on vide le buffer clavier :
          cin.clear();
          cin.ignore( std::numeric_limits<streamsize>::max(), '\n' );
    
          if(3==a)
             cout<<"le choix est sauvegarde"<<endl;
       }
       while(a<0 || a>10);
       return 1;
    }

  9. #8
    invite54165721

    Re : programme en C++

    Comme quoi la programmation a sa place sur Futura. Il suffit de la prendre.
    Et félicitations en particulier à ceux qui travaillent pour les les logiciels libres.

  10. #9
    invitec698e508

    Re : programme en C++

    Citation Envoyé par lole34 Voir le message
    bonjours, regarde la je pense que tu auras plus de reponse ou sinon tu peux poser ta question :
    http://www.siteduzero.com/forum-81-237-langage-c.html

    cordialement laurent.
    Citation Envoyé par alovesupreme Voir le message
    Comme quoi la programmation a sa place sur Futura. Il suffit de la prendre.
    Et félicitations en particulier à ceux qui travaillent pour les les logiciels libres.
    bonsoir,je n ai pas mis en doute la valeur du site bien au contraire mais c etait pour lui d avoir peut etre plus vite une reponse,dans un domaine plus approprié mais il a trouvé sont bonheur c est l essentiel

    cordialement laurent .

  11. #10
    JPL
    Responsable des forums

    Re : programme en C++

    Le clavier comporte une touche apostrophe. Merci de l'utiliser pour une lecture plus agréable.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  12. #11
    invitee5fedd72

    Re : programme en C++

    Une autre question:
    j'ai déclaré un tableau de chaine de caractères multidimentionnel,
    char *noms[100][2]
    Pour utiliser ce tableau, j'ai pas réussi à l'initialiser avec l'alloucation dynamique (avec new).

    Pouvez vous m'aider sur ce problème
    Merci d'avance

  13. #12
    polo974

    Re : programme en C++

    char *noms[100][2];

    comme ça tout cru, c'est un tableau bidim (100 * 2) de pointeurs sur char...

    int * p[3]; // tableau de 3 pointeurs sur int
    int (*p)[3]; // pointeur sur tableau de 3 int

    parenthèse prioritaire sur accolade prioritaire sur étoile (voir les précédences)

    donc
    char *noms[100][2];
    noms => est un:
    [100] => tableau de 100
    [2] => tableau de 2
    * => pointeur
    char => de char
    Dernière modification par polo974 ; 05/03/2008 à 10h48.

Discussions similaires

  1. programme
    Par invite425ddf72 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/01/2008, 13h55
  2. Programme TI-89
    Par invite693d963c dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 25/10/2007, 17h49
  3. programme en vb
    Par invitedba2660f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/03/2007, 16h51
  4. Programme C
    Par invite1a90427b dans le forum Électronique
    Réponses: 3
    Dernier message: 21/03/2007, 21h02
  5. [Brun] Programme TV
    Par invite8f28c2f6 dans le forum Dépannage
    Réponses: 0
    Dernier message: 12/01/2007, 18h52
Découvrez nos comparatifs produits sur l'informatique et les technologies.