Exercices Algorithme

Exercice 4 Les Enregistrements Corrigé

Ecrire une fonction qui détermine la différence en nombre de jours entre deux dates

Type TDate = Enregistrement
    Jour : entier
    Mois : entier
    Annee : entier
Fin

Fonction EstBissextile(Annee : entier) : Booleen
    Si (Annee % 400 = 0) ou ((Annee % 4 = 0) et (Annee % 100 ≠ 0)) Alors
        Retourner VRAI
    Sinon
        Retourner FAUX
    FinSi
FinFonction

Fonction NombreJoursDansMois(Mois : entier, Annee : entier) : entier
    Si Mois = 1 ou Mois = 3 ou Mois = 5 ou Mois = 7 ou Mois = 8 ou Mois = 10 ou Mois = 12 Alors
        Retourner 31
    Sinon Si Mois = 4 ou Mois = 6 ou Mois = 9 ou Mois = 11 Alors
        Retourner 30
    Sinon Si Mois = 2 Alors
        Si EstBissextile(Annee) Alors
            Retourner 29
        Sinon
            Retourner 28
        FinSi
    FinSi
FinFonction

Fonction ConvertirEnJours(Date : TDate) : entier
    Déclarer JoursTotaux : entier
    JoursTotaux ← Date.Annee * 365 + Date.Jour
    
    Pour i de 1 à Date.Mois - 1 faire
        JoursTotaux ← JoursTotaux + NombreJoursDansMois(i, Date.Annee)
    FinPour
    
    Pour i de 1 à Date.Annee - 1 faire
        Si EstBissextile(i) Alors
            JoursTotaux ← JoursTotaux + 1
        FinSi
    FinPour
    
    Retourner JoursTotaux
FinFonction

Fonction DifferenceJours(Date1 : TDate, Date2 : TDate) : entier
    Déclarer JoursDate1, JoursDate2 : entier
    JoursDate1 ← ConvertirEnJours(Date1)
    JoursDate2 ← ConvertirEnJours(Date2)
    
    Retourner Abs(JoursDate2 - JoursDate1)
FinFonction

Début
    Déclarer Date1, Date2 : TDate
    Déclarer Diff : entier

    Ecrire("Entrer la première date (jour, mois, année) :")
    Lire(Date1.Jour, Date1.Mois, Date1.Annee)

    Ecrire("Entrer la deuxième date (jour, mois, année) :")
    Lire(Date2.Jour, Date2.Mois, Date2.Annee)

    Diff ← DifferenceJours(Date1, Date2)

    Ecrire("La différence en jours entre les deux dates est : ", Diff)
Fin

Exemple d'exécution :

  • Date 1 : 15/03/2020
  • Date 2 : 10/04/2020

La différence en jours entre ces deux dates serait de 26 jours.

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.