Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2822 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  une 'tite question, y a pas plus simple pour checker l input ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

une 'tite question, y a pas plus simple pour checker l input ?

n°459836
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 04:58:39  profilanswer
 

je donne un exemple simple :
 

Code :
  1. int answer;
  2. cout << "enter your age" << flush;
  3. cin >>answer;

 
 
si la personne entre en caratere non numerique, il afficherai une ereur et redemenderai la saisie.
 
comment faire ?
tks
 
 
le vrai code :
 

Code :
  1. do {
  2.     cout<<"How many players : "<<flush;     //input the size of the table
  3.     cin>>arraysize;
  4.     if (arraysize<1) {
  5.         cout<<"Error, one player minimum. :P \a" <<endl;
  6.         cout<<"How many players : "<<flush;
  7.         cin>>arraysize; }
  8.     }
  9.     while (arraysize<1);

 
 :hello:

mood
Publicité
Posté le 17-07-2003 à 04:58:39  profilanswer
 

n°459846
polo021
Posté le 17-07-2003 à 08:11:11  profilanswer
 

cin>>answer;
while(!isdigit(answer))
{
 
cout << "enter your age" << flush;  
cin >>answer;  
 
}

n°459921
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 09:57:35  profilanswer
 

polo021 a écrit :

cin>>answer;
while(!isdigit(answer))
{
 
cout << "enter your age" << flush;  
cin >>answer;  
 
}


weeeeeeee c est e que je cherchais merci !!
isdigit sa fait partie de quelle librairie ? [:alarmclock119]
 
heu non en fait sa marche pas answer est un entier ....


Message édité par xiluoc le 17-07-2003 à 10:20:18
n°459934
polo021
Posté le 17-07-2003 à 10:03:05  profilanswer
 

xiluoc a écrit :


weeeeeeee c est e que je cherchais merci !!
isdigit sa fait partie de quelle librairie ? [:alarmclock119]  


pour ce genre de question cf MSDN :o  
 
 
 
 
 
 
 
 
ctype.h :kaola:

n°459957
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 10:20:53  profilanswer
 

polo021 a écrit :


pour ce genre de question cf MSDN :o  
 
 
 
 
 
 
 
 
ctype.h :kaola:  


ca marqhe pas pour answer entier..

n°459970
polo021
Posté le 17-07-2003 à 10:30:41  profilanswer
 

xiluoc a écrit :


ca marqhe pas pour answer entier..


hein?

n°459980
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 10:39:11  profilanswer
 

sa fait planter le programme, ma variable answer est un integer, je pense que cest pour ca

n°460009
polo021
Posté le 17-07-2003 à 10:57:10  profilanswer
 

xiluoc a écrit :

sa fait planter le programme, ma variable answer est un integer, je pense que cest pour ca


mets la en char* et transforme la en integer grace a atoi
 
 :hello:

n°460028
Taz
bisounours-codeur
Posté le 17-07-2003 à 11:15:19  profilanswer
 

n'importe quoi putain!!!!!!!!!!!!!!!!!!
je t'ai déjà dit de faire

Code :
  1. if(cin >> truc)
  2. {
  3. cout << "ok";
  4. }
  5. else
  6. {
  7. cout << "pas ok";
  8. }


 
et polo tu merites des baffes

n°460031
polo021
Posté le 17-07-2003 à 11:17:41  profilanswer
 

++Taz a écrit :

n'importe quoi putain!!!!!!!!!!!!!!!!!!
je t'ai déjà dit de faire

Code :
  1. if(cin >> truc)
  2. {
  3. cout << "ok";
  4. }
  5. else
  6. {
  7. cout << "pas ok";
  8. }


 
et polo tu merites des baffes


tout ce que je lui ai dit est correct, c'est juste que c'est pas la meilleure solution [:sinclaire]

mood
Publicité
Posté le 17-07-2003 à 11:17:41  profilanswer
 

n°460050
Taz
bisounours-codeur
Posté le 17-07-2003 à 11:33:27  profilanswer
 

polo021 a écrit :


tout ce que je lui ai dit est correct, c'est juste que c'est pas la meilleure solution [:sinclaire]

dégages de ce topic  :o  
 

Code :
  1. #include <iostream>
  2. #include <limits>
  3. using namespace std;
  4. int main()
  5. {
  6.   int i;
  7.  
  8.   for( ; ; )
  9.     {
  10.       cout << "saisiseez un entier : " << flush;
  11.      
  12.       if( cin >> i )
  13. {
  14.   break;
  15. }
  16.       else if (cin.eof())
  17. {
  18.   cout << endl << "EOF, Bye" << endl;
  19.   return 0;
  20. }
  21.       else
  22. {
  23.   cin.clear();
  24.   cin.ignore(numeric_limits<int>::max(), '\n');
  25. }
  26.     }
  27.      
  28.  
  29.   cout << "voila l'entier : " << i << endl;
  30. }


 
ou bien on peut passer par une solution intermédiaire avec un istringstream. peut etre plus court à ecrire, mais bon, je vous montre quand même
 

Code :
  1. if(getline(cin, s))
  2. {
  3.   istringstream is(s);
  4.   if( is >> i )
  5.     {
  6.       break;
  7.     }
  8. }

n°460068
Taz
bisounours-codeur
Posté le 17-07-2003 à 11:47:26  profilanswer
 

Code :
  1. #include <iostream>
  2. #include <limits>
  3. #include <sstream>
  4. #include <string>
  5. using namespace std;
  6. int main()
  7. {
  8.   int i;
  9.  
  10.   for( ; ; )
  11.     {
  12.       cout << "1) saisissez un entier : " << flush;
  13.      
  14.       if( cin >> i )
  15. {
  16.   break;
  17. }
  18.       else if(cin.bad())
  19. {
  20.   cerr << "Erreur d\'E/S" << endl;
  21.   return 1;
  22. }
  23.       else if (cin.eof())
  24. {
  25.   cout << endl << "EOF, Bye" << endl;
  26.   return 0;
  27. }
  28.       else
  29. {
  30.   cin.clear();
  31.   cin.ignore(numeric_limits<int>::max(), '\n');
  32.     }
  33.   cout << "1) voila l'entier : " << i << endl;
  34.   cin.ignore(numeric_limits<int>::max(), '\n');
  35.   for( ; ; )
  36.     {
  37.       cout << "2) saisissez un entier : " << flush;
  38.       string s;
  39.       if(getline(cin, s))
  40. {
  41.   istringstream is(s);
  42.   if( is >> i )
  43.     {
  44.       break;
  45.     }
  46. }
  47.       else if(cin.bad())
  48. {
  49.   cerr << "Erreur d\'E/S" << endl;
  50.   return 1;
  51. }
  52.       else if (cin.eof())
  53. {
  54.   cout << endl << "EOF, Bye" << endl;
  55.   return 0;
  56. }
  57.     }
  58.      
  59.  
  60.   cout << "2) voila l'entier : " << i << endl;
  61. }


 
voilà quelque chose de plus complet, je préfère la premiere solution

n°460141
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 12:40:48  profilanswer
 

c est sympa quand meme polo  :whistle:  
ca me sera utile pour les string.
 
 

n°460151
xiluoc
un pc pour les unirs ....
Posté le 17-07-2003 à 12:52:21  profilanswer
 

les "plonk" c mal ..   :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  une 'tite question, y a pas plus simple pour checker l input ?

 

Sujets relatifs
question con : peut-on mettre un if seul ?question sur enum et classe [possible ou pas ?]
[SQL] simple reqete (jointure ) et optimisationPetite question de noob
ptite question sur du htmlQuestion simple vb
tres simple (surdef doperateur)[VB] Question sur la facon de VB de procéder avec les nombres
[php:resolu] compteur trés simple sur un exe, comment faire? 
Plus de sujets relatifs à : une 'tite question, y a pas plus simple pour checker l input ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR