Langage C, vérifier saisie numérique
sofianrob
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis débutant dans le langage C et je voudrais afficher un message erreur quand la saisie n'est pas numérique. le problème c'est que si je met une lettre à la place d'une note, j'ai le message "introduisez une note qui apparait en boucle", merci pour votre aide.
int compteur = 0;
float note = 0, tot = 0;
printf("Statistiques relatives a une suite de notes\n");
do
{
printf("introduisez une note : \n");
scanf("%f", ¬e);
tot = tot + note;
compteur = compteur + 1;
} while (note >= 0);
if (compteur != 0)
{
tot = tot - note;
tot = tot / (compteur - 1);
printf("votre moyenne est de : %f", tot);
}
else
{
printf("aucune note valide");
}
return 0;
}
Je suis débutant dans le langage C et je voudrais afficher un message erreur quand la saisie n'est pas numérique. le problème c'est que si je met une lettre à la place d'une note, j'ai le message "introduisez une note qui apparait en boucle", merci pour votre aide.
int compteur = 0;
float note = 0, tot = 0;
printf("Statistiques relatives a une suite de notes\n");
do
{
printf("introduisez une note : \n");
scanf("%f", ¬e);
tot = tot + note;
compteur = compteur + 1;
} while (note >= 0);
if (compteur != 0)
{
tot = tot - note;
tot = tot / (compteur - 1);
printf("votre moyenne est de : %f", tot);
}
else
{
printf("aucune note valide");
}
return 0;
}
A voir également:
- Langage C, vérifier saisie numérique
- Télévision numérique - Guide
- Langage ascii - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Saisie gestuelle iphone - Guide
- Verifier compatibilite windows 11 - Guide
2 réponses
Tu as plusieurs problèmes:
- la boucle vient du fait qu'il est nécessaire de vider le buffer avant toute saisie,
- d'autre part si tu rentres une lettre , 'scanf' va le traduire en float... c'est-à-dire zéro! Donc c'est comme si tu avais saisi '0'.
En passant, il vaut mieux travailler avec des 'double' qu'avec des 'float'.
Bonne continuation.
- la boucle vient du fait qu'il est nécessaire de vider le buffer avant toute saisie,
- d'autre part si tu rentres une lettre , 'scanf' va le traduire en float... c'est-à-dire zéro! Donc c'est comme si tu avais saisi '0'.
En passant, il vaut mieux travailler avec des 'double' qu'avec des 'float'.
Bonne continuation.
Si tu rentres une lettre, scanf ne fera pas la conversion. Il ne le traduira pas en float, donc c'est comme s'il n'y a avait pas eu de scanf. Par contre le retour de la fonction scanf renverra 0 pour dire qu'aucune conversion a été faite.