Les dates

publicité
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
vrai
Bissextile
a % 400 = 0
a % 100 = 0
faux
Non
bissextile
faux
vrai
Bissextile
a % 4 = 0
faux
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
vrai
Bissextile
a % 400 = 0
a % 100 = 0
faux
Non
bissextile
vrai
a % 4 = 0
faux
Bissextile
faux
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:
case
case
case
case
4:
6:
9:
11:
case 2:
printf ("31 jours\n");
break;
printf ("30 jours\n");
break;
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 %
{
if (j < 30)
printf ("Date
else
printf ("Date
}
else
{
if (j < 29)
printf ("Date
else
printf ("Date
}
}
400 == 0)))
correcte\n");
incorrecte\n");
correcte\n");
incorrecte\n");
Téléchargement