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