1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| #include <stdio.h>
/* -tc- pas standard et inutile
#include <conio.h>
*/
/* -tc- permet de faire le menage de maniere portable sur le flux
d'entree standard */
void purger(void)
{
int c;
while ((c = fgetc(stdin)) != '\n' && c != EOF)
{
}
}
enum choix_destination {
choix_asie
, choix_afrique
, choix_amerique_sud
};
const char* DESTINATIONS[] = {
"asie"
, "afrique"
, "amerique du sud"
};
/* -tc- main() retourne un entier de type int, toujours */
int main(void)
{
enum choix_destination destination_choisie;
int choix;
int age;
int status;
/* non utilisee
int mois;
*/
int rv;
int i;
/* -tc- on peut securiser la saisie de cette maniere */
do
{
printf("choisir le pays de destination du client:\n");
for(i = 0; i < sizeof DESTINATIONS / sizeof *DESTINATIONS; i++)
{
printf("%d-[%s]\n", i + 1, DESTINATIONS[i]);
}
rv = scanf("%d", &choix);
purger();
}
while (rv != 1 || choix < 1 || choix > 3);
destination_choisie = choix - 1;
switch (destination_choisie)
{
case choix_asie:
printf("Asie\n");
break;
case choix_afrique:
printf("Afrique\n");
break;
case choix_amerique_sud:
printf("Amerique du sud\n");
break;
}
/* if(strcmp(pays,"asie"){ printf("%s",&pays); */
if (destination_choisie == choix_asie)
{
/* -tc- on se protege contre les petits malins qui auraient la bonne
idee d'entrer des caracteres autres que des chiffres */
do
{
printf("entrez l'age du client: ");
fflush(stdout);
rv = scanf("%d",&age);
purger();
}
while (rv != 1);
if (age < 20)
{
/* -tc- pour afficher le caractere '%', on utilise %% dans la
chaine de format*/
printf("reduction de 50%%\n");
}
do
{
printf("entrez le statut du client:\n");
printf("1-[etudiant]\n2-[autre]\n");
rv = scanf("%d", &status);
purger();
}
while (rv != 1 || status < 1 || status > 2);
if (status == 1)
{
if (age < 25 )
{
printf("reduction de 50%%\n");
}
else if (age < 30)
{
printf("reduction de 30%%\n");
}
}
}
else if ((destination_choisie == choix_afrique) && (age < 30))
{
printf("reduction de 30%%\n");
}
/* -tc- Attention: mois n'a pas ete initialise et 6 <mois < 10 n'est une
syntaxe valide en C
else if ((age < 23) && (6<mois<10))
*/
/* -tc- ??? condition au hasard - je ne comprends pas vraiment ce que tu
veux ici...*/
else if (destination_choisie == choix_amerique_sud && age < 23)
{
printf("reduction de 30%%\n");
}
/* -tc- pas standard et inutile
getch();
*/
/* -tc- 0, EXIT_SUCCESS et EXIT_FAILURE sont les 3 valeurs portables que
peut retourner main() */
return 0;
} |