Ne pas permettre d'entre une lettre en INT (C++)

Signaler
Messages postés
1
Date d'inscription
jeudi 26 mai 2005
Statut
Membre
Dernière intervention
26 mai 2005
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Voila j'ai un travaille de fin d'etude secondaire en c++ et voudrait ne pas permettre à l'utilisateur d'entre un carctere ou lettre
ex :

int i;
do {
cout<<"entrez un chiffre : ";


cin>>i;
}
while(i<1 || i>400);

l'utlisisateur peut entrer par exemple 112 mais quand il entre 'a' la boucle plante

PS : si vous pouvez me repondre assez vite se serait sympas!!!!(avant demain si possible!!!)

7 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
int Touche = getch();
if(Touche>57 || Touche < 48)
{
cout << "Vous n'avez pas presser de chiffre";
goto Touche;
}

Dis si la touche pressée est un chiffre ou pas.
Après faut adapter.
Et ne me dites pas si c'est portable ou pas, j'en sais rien !!!!!!!! lol


void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
désolé pour le goto, c'est juste que j'ai fais des essais
Oublié de l'enlevé ;)


void Aurevoir( void ); //Bonne journée
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Il suffit de tester l'expression "cin >> i" qui renvoi NULL (0)
en cas d'erreur de saisie (si un caractere est entré par exemple).



#include

#include <limits>



int main()

{

using namespace std;



int i;

while(true)

{

cout<<"entrez un chiffre : " << flush;



if( !( cin >> i ) )

{

cin.clear();


cin.ignore( numeric_limits<streamsize>::max(), '\n' );

continue;

}



if( 1 <= i && i <= 400 )

break;

}

}



Joky, getch (en plus de ne pas etre portable) lit le clavier alors que
"cin >>" lit sur l'entrée standard (un flux en mode ligne
habitulement associé au clavier).
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Mdr steveeeeeeee tu me suis partoutttttttttttttt
Je vais devoir changer de pseudooooooooooo
Mon dieuuuuuuuuuuuu


void Aurevoir( void ); //Bonne journée
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Je ne te suis pas, c'est toi qui est sur mon chemin
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Oh mon dieu, et je vois plein de " Ce n'est pas portable !! "

Desfois je fais ce rêve :
Jvous met dans l'ambiance, Parodie de Orange Mécanique ( Kubrick ) Comme dans les guignols
Avec comme personnage que des steve, qui me disent sans cesse, Ce n'est pas portable, et ca résonne partout Mon dieu
je veux me réveilllllerrrrrrrrrrrrr
mdr
jméclatte


void Aurevoir( void ); //Bonne journée
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Excuse moi de t'avoir traumatisé avec ca, le C et le C++ sont des
langages qui se veulent portable (c'est le pourquoi du C) donc c'est
dommage de ne pas chercher à etre portable tant que l'on peut l'etre.
Ce n'est pas difficile, il suffit à priori de respecter les standards.

Quand un gars pose une question sans préciser son envirronement et que
tu lui réponds avec des 'getch()' ou autre 'system("pause")', si il est
sous linux il l'aura mauvaise devant la horde d'insultes que gcc lui
balancerasur sa sortie erreur