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)
Algorithme avec conditions simples (3/6) Arbre équilibré : vrai faux a % 100 = 0 vrai faux vrai faux a % 4 = 0 a % 400 = 0 Bissextile Non bissextile Bissextile Non bissextile
Algorithme avec conditions simples (4/6) Arbre déséquilibré : SI (a % 4 == 0) ALORS SI (a % 100 == 0) SI (a % 400 == 0) ALORS a est bissextile SINON a n'est pas bissextile FIN SI SINON a est bissextile
Algorithme avec conditions simples (5/6) Arbre déséquilibré : vrai faux a % 4 = 0 vrai faux Non bissextile a % 100 = 0 vrai faux 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"); case 2: if ((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0))) printf ("29 jours\n"); else printf ("28 jours\n"); 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 : "); } 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 : "); 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 : ");
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) else printf ("Date incorrecte\n");
case 2: if ((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0))) { if (j < 30) printf ("Date correcte\n"); else printf ("Date incorrecte\n"); } if (j < 29)