dealer2kinder
Messages postés6Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention21 mai 2006
-
7 mai 2006 à 20:36
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 2012
-
5 nov. 2008 à 10:57
Salut,
voila je programme en C sous devC++ et j'aimerais savoir quel fonction me permettrait de savoir si l'utilisateur a bien saisie un chiffre entier. (pouvant etre composant de 2 nombre)
C'est dans le but de vérifier l'operation faite par l'utilisateur pour retrouver le conte dans le jeux les chiffres et les lettres.
A propos de cette verification d'operation si vous avez un example sous la main, je vous bennis pour 100 générations. ( si si !)
banniwe
Messages postés13Date d'inscriptionvendredi 31 octobre 2008StatutMembreDernière intervention22 mai 20092 4 nov. 2008 à 17:01
Bonjour ,
Comment faut - il déclarer la varraible c ; j'ai remplacer c par carractere mais il y a un bug. Quand je rentre une valleur float le programme ne ne me demande pas d'entrer de nouvelle valleur .Savez vous pourquoi et comment resoudre se probleme.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 4 nov. 2008 à 17:17
Le code doit etre le suivant :
dans le cas d'un float, il faut un scan("%f", ... au la place du scan(%d", ...
(le "%d" sert a récupérer un entier (int)).
/*
ou comment utiliser scanf en testant les données lues. Dans
cet exemple, on veut lire un entier positif
*/
#include <stdio.h>
int
main()
{
int n,nb_var;
char caractere;
n=1;
nb_var=1;
do {
nb_var=scanf("%d",&n); /* nb_var vaut 0 si l'utilisateur n'a pas donne un
entier, et 1 si l'utilisateur a donne un entier.
n vaut le nombre donne par l'utilisateur si c'est
un entier (si nb_var==1, donc), et sa valeur n'est
pas changée sinon.
*/
if (!nb_var) {
/*
cas ou la valeur de n n'a pas ete changée :
on lit jusqu'à la fin de la ligne.
*/
do {
scanf("%c",&caractere);
} while (caractere != '\n');
}
/*
on recommence la boucle si aucun entier n'a ete lu, ou si l'entier
lu est plus petit que 0
*/
} while ((nb_var==0)||(n < 0));
return 0;
}
banniwe
Messages postés13Date d'inscriptionvendredi 31 octobre 2008StatutMembreDernière intervention22 mai 20092 4 nov. 2008 à 18:14
excusez moi je me suis mal exprimer moi je voudrais verifier que l'utilisateur a bien saisie un nombre entier
nb_var=scanf("%d",&n); /* nb_var vaut 0 si l'utilisateur n'a pas donne un
entier, et 1 si l'utilisateur a donne un entier.
n vaut le nombre donne par l'utilisateur si c'est
un entier (si nb_var==1, donc), et sa valeur n'est
pas changée sinon.
*/
seulement avec se code quand j'entre un float nb_var est quand meme egal à 1. Une idée pour remedier à se problème ?
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 5 nov. 2008 à 10:57
C'est normal.
si tu saisis 15.42, le scanf("%d" ...) va a priori lire et stocker l'entier "15" dans ta variable et le scanf reverra un 1, puisqu'il aura bien rempli 1 entier.