1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| program calcule_age;
function estUneAnneeBissextile(annee : Integer) : Boolean;
begin
if annee mod 4=0 then
estUneAnneeBissextile:=true
else
estUneAnneeBissextile:=false
end; {estUneAnneeBissextile}
function estUnMoisA31Jours(mois : Integer) : Boolean;
begin
case mois of
1,3,5,7,8,10,12 : estUnMoisA31Jours:=true
else estUnMoisA31Jours:=false;
end; {estUnMoisA31Jours}
function estUneFausseDate(jour,mois,annee : Integer) : Boolean;
begin
if not(estUnMoisA31Jours(mois)) and (jour:=31) then
estUneFausseDate:=true;
if mois:=2 and estUneAnneeBissextile(annee) and jour>29 then
estUneFausseDate:=true;
if mois:=2 and not(estUneAnneeBissextile(annee)) and jour>28 then
estUneFausseDate:=true
else
estUneFausseDate:=false
end; {estUneFausseDate}
procedure saisieDate(S jour, mois, annee : Integer);
var bJour, bMois, bAnnee : Boolean;
begin
bJour:=true;
bMois:=true;
bAnnee:=true;
repeat
repeat
writeln('Entrez le jour :')
readln(jour)
if (jour<1) or (jour>31) then
bJour:=false
writeln('Ce jour est invalide, recommencez svp')
until bJour
repeat
writeln('Ce mois est invalide, recommencez svp')
readln(mois)
if(mois<1) ou (mois>12) then
bMois:=false
writeln('Ce mois est invalide, recommencez svp')
until not(estUneFausseDate(jour,mois,annee))
end; {saisieDate}
procedure saisie(S jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer);
begin
writeln('Entrez la date actuelle');
sasieDate(jourActuel, moisActuel, anneeActuelle);
writeln('Entrez votre date de naissance');
saisieDate(jourDeNaissance, moisDeNaissance,anneeDeNaissance);
end; {saisie}
function calculDeLAge(jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer) : Integer;
begin
if moisActuel>moisDeNaissance then
calculDeLAge:=(anneeActuelle-anneeDeNaissance)
else
if moisActuel:=moisDeNaissance then
if jourActuel>=jourDeNaissance then
calculDeLAge:=(anneeActuelle-anneeDeNaissance)
else
calculDeLAge:=((anneeActuelle-anneeDeNaissance)-1)
else
calculDeLAge:=((anneeActuelle-anneeDeNaissance)-1)
end; {calculDeLAge}
function ageNegatif(age : Integer) : Boolean;
begin
if age<0 then
ageNegatif:=true
else
ageNegatif:=false
end; {ageNegatif}
procedure affichageAge(age : Integer);
begin
if ageNegatif(age) then
writeln('Vous n"êtes pas encore né')
else
writeln('Vous avez',age,'ans')
end; {affichageAge}
procedure ageActuel();
var jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance : Integer;
begin
saisie(jourActuel, moisActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance);
affichageAge(calculDeLAge(jourActuel, anneeActuelle, jourDeNaissance, moisDeNaissance, anneeDeNaissance));
end. {ageActuel} |
Partager