Controle d'entier dans un cin !!!??? - C++ - Programmation
Marsh Posté le 04-05-2004 à 13:24:43
Code :
|
Marsh Posté le 04-05-2004 à 13:26:15
vous avez toujours l'art et la manière de faire compliqué
Code :
|
Marsh Posté le 04-05-2004 à 13:30:52
> je ne connaissais pas cette syntaxe...
> tu peux préciser la signification de cette syntaxe avec not stp?
je viens de regarder. je ne savais pas que not était une macro = synonyme de ! oki.
Marsh Posté le 04-05-2004 à 13:42:13
hey j'ai oublié des jolie parenthèses
not(cin >> entier)
ou alors t'inverse ton then/else
if(cin >> entier)
ok;
else pas_bon;
Marsh Posté le 04-05-2004 à 14:02:52
Dans la même catégorie, je souhaiterais saisir une valeur. Lorsque cette valeur est un nombre, la saisie doit être placée dans un type entier, lorsque cette valeur n'est pas un nombre, la saisie doit etre placée dans un chaine.
En me basant sur l'exemple donné, cela donnerait ca...
Code :
|
Marsh Posté le 04-05-2004 à 14:23:20
Cette solution me plaisait bien, mais il y a un hic! Lorsque la saisie est égale à "-", le "-" est interprété comme un type entier !
Marsh Posté le 04-05-2004 à 16:16:22
Merci beaucoup (à toi et aux autres) mais j'ai un new prob maintenant. Je voudrais, lorsque mon cin recoit des char a la place d'un entier, donner la possibilité à l'utilisateur de réentrer correctement la valeur. Seulement, apparamement le cin ne veut pas se vider!!! J'ai pourtant essayé avec le cin.clear(); mais rien y fait.
Aurais tu une explication à ce phénomène un peu étrange ;-)
voila cette partie de mes lignes de code...
cout << "Entrez le numero de la page contenant le mot ...";
cin >> ValPg;
while ( cin.fail())
{
cin.clear(); //???
cout << "Le numero de page est sence etre un entier !!!" << endl;
cout << "Entrez le numero de la page contenant le mot ...";
cin >> ValPg;
}
Marsh Posté le 04-05-2004 à 16:27:24
normal tu n'en fait qu'à ta tête. fais comme on te dit et fais une recherche, j'ai montré 100x comment faire
Marsh Posté le 05-05-2004 à 15:10:27
J'ai aussi essayé ta méthode mais j'ai le meme problème en fait. J'ai aussi effectué une recherche puisque tu me disais que tu avais déjà répondu à ce genre de question. J'ai cherché sur tes réponses et aucune (dans les fameuses 200 premières) n'en traitait. Je suis vraiment désolé de t'embeter avec ce genre de ti probs surtout que tu sembles calé en C mais... Enfin bon voila à quoi ressemble le code que j'avais mis avec ta soluce. Merci encore a+ pitet.
Code:
cout << "Entrez le numero de la page contenant le mot ...";
while ( ! (cin >> ValPg) )
// le cin fonctionnait pas chez moi, j'avais une erreur !
// Comment est ce possible??
{
cout << "Le numero de page est sence etre un entier !!!" << endl;
cout << "Entrez le numero de la page contenant le mot ...";
cin >> ValPg;
}
Marsh Posté le 05-05-2004 à 15:16:55
cout << "Entrez le numero de la page contenant le mot ..." << flush;
et voilà ... sinon tu fais quoi de nos conseils .. ça fait 3 postes ou on te dit que sur erreur, il faut vider cin et faire un .clear() et toi rien du tout ...
Marsh Posté le 05-05-2004 à 16:02:13
ReplyMarsh Posté le 05-05-2004 à 16:56:00
Ben je l'avais déjà mis dans la source d'avant et je viens de le remettre mais ca change absolument rien (le clear)!!! Je pars dans une boucle folle et pi voila. Re voila le code tel qu'il est à présent.
cout << "Entrez le numero de la page contenant le mot ..." << endl;
while ( ! (cin >> ValPg) )
{
cout << "Le numero de page est sence etre un entier !!!" << endl;
cout << "Entrez le numero de la page contenant le mot ..." << endl << flush;
cin.clear();
cin >> ValPg;
}
Marsh Posté le 05-05-2004 à 17:08:53
Code :
|
t'es vraiment un boolay ! faut te le dire combien de fois "faut vider cin "
Marsh Posté le 05-05-2004 à 21:14:17
à rien au final. juste à montrer la structuration logique.
soit c'est ok,
sinon vérifier les erreurs d'E/S
sinon vérifier EOF
sinon c'est que la donnée ne correspond pas à ce que qu'on veut lire (problème de format)
Marsh Posté le 04-05-2004 à 13:00:37
Bonjour, j'ai un ti prob en C et C++
En fait je saisi un nombre avec cin seulement je ne sais pas effectuer
de isdigit sur mon nombre pour verifier que c'est bien un entier puisque cin sort un stream !! Y a t'il une fonction qui peut le vérifier ou a tout le moins me convertir ma stream en un entier ???
Merci d'avance à ceux qui prendront le temps de me lire et me répondre.
A+