Post on 06-Jan-2016
description
Les datesLes dates
Recherche d’un algorithme Recherche d’un algorithme pour déterminer si une année pour déterminer si une année est bissextile ou nonest bissextile ou non
Algorithme avec Algorithme avec conditions simples conditions simples (1/6)(1/6)
2 Solutions :2 Solutions :
- Arbre équilibré
- Arbre déséquilibré
Algorithme avec Algorithme avec conditions simples conditions simples (2/6)(2/6)
Arbre équilibré :Arbre équilibré :
SISI (a % 100 == 0) (a % 100 == 0)ALORSALORS
SISI (a % 400 == 0) (a % 400 == 0)ALORSALORS a est bissextile a est bissextileSINONSINON a n'est pas bissextile a n'est pas bissextile
FIN SIFIN SISINONSINON
SISI (a % 4 == 0) (a % 4 == 0)ALORSALORS a est bissextile a est bissextileSINONSINON a n'est pas bissextile a n'est pas bissextile
FIN SIFIN SIFIN SIFIN SI
Algorithme avec Algorithme avec conditions simples conditions simples (3/6)(3/6)
Arbre équilibré :Arbre équilibré :
a % 100 = 0
a % 400 = 0 a % 4 = 0
Bissextile Non bissextile
Bissextile Non bissextile
vrai
vraivrai
faux
fauxfaux
Algorithme avec Algorithme avec conditions simples conditions simples (4/6)(4/6)
Arbre déséquilibré :Arbre déséquilibré :
SISI (a % 4 == 0) (a % 4 == 0) ALORSALORS SISI (a % 100 == 0) (a % 100 == 0) ALORSALORS
SISI (a % 400 == 0) (a % 400 == 0) ALORSALORS a est bissextile a est bissextile
SINONSINON a n'est pas a n'est pas bissextilebissextile
FIN SIFIN SI SINONSINON a est bissextile a est bissextile
FIN SIFIN SI SINONSINON a n'est pas bissextile a n'est pas bissextile
FIN SIFIN SI
Algorithme avec Algorithme avec conditions simples conditions simples (5/6)(5/6)
Arbre déséquilibré :Arbre déséquilibré :
a % 100 = 0
a % 400 = 0
a % 4 = 0
Bissextile Non bissextile
Non bissextile
vrai
vrai
faux
faux
vrai
Bissextile
faux
Algorithme avec Algorithme avec conditions simples conditions simples (6/6)(6/6)
Quand utiliser quel algorithme et Quand utiliser quel algorithme et pourquoi ???pourquoi ???
Algorithme avec Algorithme avec condition composéecondition composée
SISI (a % 4 == 0 && (a % 4 == 0 && ((a % 100 != 0) || (a % 400 == ((a % 100 != 0) || (a % 400 ==
0)))0)))
ALORSALORS a est bissextile a est bissextileSINONSINON a n'est pas bissextile a n'est pas bissextile
FIN SIFIN SI
Les datesLes dates
Déterminer le nombre de Déterminer le nombre de jours que comporte un mois jours que comporte un mois (m) donné d’une année (a) (m) donné d’une année (a) donnée.donnée.
sswitch (b)witch (b){{
case 1:case 1:case 3:case 3:case 5:case 5:case 7:case 7:case 8:case 8:case 10:case 10:case 12: case 12: printf ("31 jours\n");printf ("31 jours\n");
break;break;case 4:case 4:case 6:case 6:case 9:case 9:case 11:case 11: printf ("30 jours\n");printf ("30 jours\n");
break;break;case 2:case 2: if ((a % 4 == 0) && if ((a % 4 == 0) &&
((a % 100 != 0) || (a % 400 == 0)))((a % 100 != 0) || (a % 400 == 0)))
printf ("29 jours\n");printf ("29 jours\n");elseelse
printf ("28 jours\n");printf ("28 jours\n");break;break;
default:default:printf ("Le numero de mois est incorrect\n");printf ("Le numero de mois est incorrect\n");
}}
Les datesLes dates
Demander le jour (j), le mois (m) Demander le jour (j), le mois (m) et l’année (a) et déterminer si la et l’année (a) et déterminer si la date ainsi constituée est date ainsi constituée est correcte.correcte.
printf ("Entrez l'annee : ");printf ("Entrez l'annee : ");scanf ("%d", &a);scanf ("%d", &a);while (a < 1600 || a > 3000)while (a < 1600 || a > 3000){{
printf ("L'annee doit etre comprise entre 1600");printf ("L'annee doit etre comprise entre 1600");printf (" et 3000. Veuillez a nouveau ");printf (" et 3000. Veuillez a nouveau ");printf ("entrez l'annee : ");printf ("entrez l'annee : ");scanf ("%d", &a);scanf ("%d", &a);
}}printf ("Entrez le mois : ");printf ("Entrez le mois : ");scanf ("%d", &m);scanf ("%d", &m);while (m < 1 || m > 12)while (m < 1 || m > 12){{
printf ("Donnez une valeur entre 1 et 12.\n");printf ("Donnez une valeur entre 1 et 12.\n");printf ("Entrez a nouveau le mois : ");printf ("Entrez a nouveau le mois : ");scanf ("%d", &m);scanf ("%d", &m);
}}printf ("Entrez le jour : ");printf ("Entrez le jour : ");scanf ("%d", &j);scanf ("%d", &j);while (j < 1 || j > 12)while (j < 1 || j > 12){{
printf ("Donnez une valeur entre 1 et 31.\n");printf ("Donnez une valeur entre 1 et 31.\n");printf ("Entrez a nouveau le jour : ");printf ("Entrez a nouveau le jour : ");scanf ("%d", &j);scanf ("%d", &j);
}}
switch (m)switch (m){{
case 1:case 1:case 3:case 3:case 5:case 5:case 7:case 7:case 8:case 8:case 10:case 10:case 12: case 12:
printf ("Date correcte\n");printf ("Date correcte\n");break;break;
case 4:case 4:case 6:case 6:case 9:case 9:case 11:case 11:
if (j < 31)if (j < 31)printf ("Date correcte\n");printf ("Date correcte\n");
elseelseprintf ("Date incorrecte\n");printf ("Date incorrecte\n");
break;break;
case 2:case 2:if ((a % 4 == 0) && if ((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0)))((a % 100 != 0) || (a % 400 == 0))){{
if (j < 30)if (j < 30)printf ("Date correcte\n");printf ("Date correcte\n");
elseelseprintf ("Date incorrecte\n");printf ("Date incorrecte\n");
}}elseelse{{
if (j < 29)if (j < 29)printf ("Date correcte\n");printf ("Date correcte\n");
elseelseprintf ("Date incorrecte\n");printf ("Date incorrecte\n");
}}}}