Écrire un programme testage.c contenant une fonction
main
qui :
- lit sur le clavier l'âge de l'utilisateur avec la fonction
scanf
;
- teste si la réponse est valide par analyse du code retour de
scanf
et teste si la valeur est comprise entre 0 et 130;
- affiche si l'utilisateur est majeur (>= 18 ans) ou mineur.
Solution
/*
Nom : testage.c
Auteur : Thierry46
Role : Demande l'âge de l'utilisateur,
teste si la réponse est valide et
affiche si l'utilisateur est majeur (>= 18 ans).
Paramètres : non pris en compte.
Code retour : 0 (EXIT_SUCCESS)
Pour produire un exécutable avec le compilateur libre GCC :
gcc -Wall -std=c99 -o testage.exe testage.c
Pour exécuter, tapez : ./testage.exe
Version : 1.0 du 18/1/2008
Licence : GNU GPL
*/
#include <stdio.h>
#include <stdlib.h>
/* Constantes symboliques pour changement plus facile :
pas besoin de chercher toutes les occurences de la constante litterale
dans le corps de la fonction. */
#define AGE_MAJEUR 18
#define AGE_MINI 0
#define AGE_MAXI 130
int main(void)
{
// Declare les variables
int ageLu = 0;
int nbChampLu = 0;
int codeRetour = EXIT_SUCCESS; // Valeur par defaut
// Ecrit la question à l'écran
(void)puts("Quel est votre age :");
// Lit la réponse de l'utilisateur : un entier
nbChampLu = scanf("%d", &ageLu);
// Teste si scanf a bien reussi a convertir le nombre entre
if (nbChampLu != 1)
{
(void)fputs("\aErreur : Vous devez entrer un nombre entier !\n", stderr);
codeRetour = EXIT_FAILURE;
}
else if (ageLu < AGE_MINI || ageLu>AGE_MAXI)
{
(void)fprintf(stderr,
"\aErreur : Vous devez entrer un nombre entier compris entre %d et %d !\n",
AGE_MINI, AGE_MAXI);
codeRetour = EXIT_FAILURE;
}
else
{
// Le test se fait a l'appel de puts
(void)puts((ageLu < AGE_MAJEUR) ? "Vous etes mineur !" : "Vous etes majeur !");
}
return codeRetour;
} // int main(...
Aucun commentaire:
Enregistrer un commentaire