|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Problème de saisie avec cin (c++) [ Archives / Divers ] (SystemOfAXav)
Informations & options pour cette discussion
|
mercredi 22 décembre 2004 à 13:15:23 |
Problème de saisie avec cin (c++)

SystemOfAXav
|
Salut, Je doit programmer un petit jeu comme projet de fin de semestre. A plusieurs reprises, je demande a l'utilisateur de saisir un entier entre 3 et 15. Je fait donc une boucle: do{ cout << "Entrez un entier entre 3 et 15 : "; cin >> entier; } while (entier < 3 || entier > 15); Mon problème est que quand l'utilisateur entre autre chose qu'un nombre... la boucle s'éxecute indéfiniment et ne ma laisse plus entrer quelque chose! voila, si quelqu'un connaît une astuce, merci d'avance! Voila, voila... @+ Syst3mOf@Xav Voir Redmond et mourir !
|
|
|
|
mercredi 22 décembre 2004 à 14:54:50 |
Re : Problème de saisie avec cin (c++)

Gendal67
|
#include <iostream.h> #include <stdio.h>
using namespace std;
int main(int argc, char **argv) {
ios::sync_with_stdio(); // partage des meme flux pr I/O en C et en C++
int entier;
do{
cout << "\rEntrez un entier entre 3 et 15 : "; scanf("%d", &entier);
} while (entier < 3 || entier > 15);
} // fin main() ...
|
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
|
|
mercredi 22 décembre 2004 à 15:27:13 |
Re : Problème de saisie avec cin (c++)

plus_plus_fab
|
"ios::sync_with_stdio(); // partage des meme flux pr I/O en C et en C++"
non, ça permet d'utiliser les memes tampons d'E/S, que tu utilises la lib C, ou stream (C++). Il ne faut pas utiliser ça sans bonnes raisons ! on fait du C ou du C++, pas les deux. En tout cas, ça ne résoudra pas le probleme. Il faut tester l'état du flux avec cin.good(), cin.fail(), ... Si tu attends un entier et que tu rentres une chaine de caractere, le flux sera corrompu comme tu pourras t'en apercevoir...
|
|
|
|
mercredi 22 décembre 2004 à 16:44:46 |
Re : Problème de saisie avec cin (c++)

Gendal67
|
mister je c tt...sache que :
""ios::sync_with_stdio(); // partage des meme flux pr I/O en C et en C++"
non, ça permet d'utiliser les memes tampons d'E/S, que tu utilises la lib C, ou stream (C++)."
<<< c'est a ça que je faisait allusion, désolé si je me suis mal exprimé!! je m'excuse d'avoir posté ici!! au revoir!!! ++
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
|
|
mercredi 22 décembre 2004 à 17:34:44 |
Re : Problème de saisie avec cin (c++)

plus_plus_fab
|
"<<< c'est a ça que je faisait allusion, désolé si je me suis mal exprimé!! " OK, c'est moi qui m'excuse alors. Mais c'etait pas clair et de plus je n'aime pas ce genre de programmation C/C++ mélangé, c'est tout.
|
|
|
|
samedi 25 décembre 2004 à 23:32:38 |
Re : Problème de saisie avec cin (c++)

Gendal67
|
lol plu_plus_fab moi nan plu, mais bon parfois, j'opte pour cette solution quand même, ça m'evite de me fouler ^^ surtout que le but de l'application de réside pas la dedans, et si le code est court, on s'en sort encore! mdr
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
|
|
dimanche 26 décembre 2004 à 21:10:45 |
Re : Problème de saisie avec cin (c++)

SystemOfAXav
|
Merci d'avoir repondu, en cherchant des infos sur cin.good(), j'ai trouvé cin.get()... pour moi c'est plus simple.
J'ai essayé avec cin.fail(), mais il n'existe pas de fonction pour vider le flux cin, et donc je sais que la valeur n'est pas bonne, mais ca plante quand même car le caractère faux reste dans le flux. ( = boucle infinie) :(
Je fait une boucle qui récupère un à un les caractère du tampon, leur retire 48 (la valeur ACSII de la touche '0') et les additionne en multipliant à chaque fois le résultat temporaire par dix; Jusqu'à ce que j'arrive au caractère '\n' (la touche ENTREE).
Et ca me donne dans tous les cas un entier! :o)
Voila, voila... @+ Syst3mOf@Xav
Voir Redmond et mourir !
|
|
|
|
mardi 25 janvier 2005 à 20:22:36 |
Re : Problème de saisie avec cin (c++)

algori
|
Si t'a envie de le faire à l'arrache, tu met une condition qui dit que si le nombre est strictement supérieur à 15 ou strictement inférieur à 3 alors tu fais revenir au début. Si ça peut te donner d'autres solutions (je te laisse trouver le code tous seul  )... Ca marche, c'est simple mais c'est un peu naze. Le code de Gendal67 est pas mal (et même très bien).
|
|
|
|
mercredi 26 janvier 2005 à 00:14:57 |
Re : Problème de saisie avec cin (c++)

SystemOfAXav
|
En fait, le problème n'était pas sur les valeurs entrées, mais sur leur type. Si l'utilisateur rentrait "a" ou la valeur de la touche F10 (par exemple), ça me fait une boucle sans fin... :( (le type demandé est int)
Avec cin.get() aucun problème, mais il faut reconstruire le nombre et vérifier que les touches entrées ne représentent que des chiffres. Bref c'est galére quoi...
Voila, voila... @+ Syst3mOf@Xav
Voir Redmond et mourir !
|
|
|
|
mercredi 26 janvier 2005 à 13:44:21 |
Re : Problème de saisie avec cin (c++)

algori
|
Ah ! D'accord ! C'est que c'est vraiment galère ! 
|
|
|
Cette discussion est classé dans : problème, utilisateur, saisie, entier, cin
Répondre à ce message
Sujets en rapport avec ce message
problème avec cin.getline(...,...,...) [ par bouba ]
J'utilise cin.getline() pour stocker une chaîne de caractère entrée au clavier. Le problème est qu'il faut appuyer deux fois sur entrée pour valider l
cin ? [ par dleewax ]
Bonjour !je vous explique mon cas...je suis debutant et je tente de développer un petit prog de résolution d'équation...j'aimerais que l'utilisateur p
URGENT : Problème de "cin" [ par monomanahune ]
Monomanahune J'ai un petit problème sur un cin.Je souhaiterais rentrer une chaine de caractère en utilisant cinmais je voudrais pouvoir entrer égaleme
Saisie de données [ par oligator ]
Bonjour j'aimerais savoir s'il y a moyen de gérer la validité des saisies d'un utilisateur avec une méthode de iostream.Par exemple, lors de la saisie
saisie d'une ligne [ par oligator ]
Salut je veux saisir une chaîne de caractere telephonecin le format est (999) 999-9999il y a un espace entre la parenthese et le prochain 9y'a t'il un
pouvoir lire un entier en tant que tableau (bit à bit) [ par platinum07 ]
Amis codeurs, bonjour !Je suis sur un petit problème depuis quelques heures... la solution est surement sous mon nez mas je ne trouve pas <img src=/im
Problème cin.getline [ par visualstar ]
Bonsoir, J'ai un petit problème qui est grave chiant lolJe programme sous linux en C++ et à un moment donné, je dois faire ceci :fflush(stdin);cout ff
Petit programme de chaine de caractère [ par trystan007 ]
J'ai un petit problème : l'utilisateur doit taper une chaine de caractère en mode console, puis, la chaine est envoyée en même tps qu'une 15aine de va
un string comme un entier. [ par DarkSchneider ]
Bonjour, J'ai un petit problème de mémoire.Je sais qu'il est possible de se servir d'une chaine de caractere pour effectuer un calcul, mais je me rapp
Problème d'entrée (cin >>) dans un tableau de float [ par Oeil_de_taupe ]
Hello tout le monde,désolé de vous importuné. Mais j'ai fait une toute petite source pour apprendre à allouer de la mémoire pour une variable puis de
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|