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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
uses crt;
{ date de reference }
{ 1er Janvier 2005 }
const
jjr=19;
mmr=1;
aaaar=2005;
{ Mais neamoins ce programme donne les ages pour n'importe quelle
date de reference, cette date n'est qu'une date experimentale}
var
jj, mm, aaaa : integer; { Variables permettant de faire la saisie de la date de
naissance }
an : integer; { variable permettant de trouver le nombre d'annee entre l'annee de naissance
et l'annee de reference}
bis : integer; { variable premettant de trouver le nombre d'annee bissectille entre
l'annee de naissance et l'annee de reference}
jour : longint; { Variable permetant de calculer le nombre de jour passee sur terre}
m,a : integer;
{ Fonction permettant de savoir si une annee est bissectille
elle se base sur le fait que l'on sait qu'une annee est bissectille
lorsquelle est un multiple de quatre .
alors ca donne en gros ceci :}
function bissect(an : integer) : boolean;
begin
if an mod 4 = 0 then
bissect:=true
else
bissect:=false;
end;
{ Fin de la fonction qui renvoie :
True(vrai) si l'annee an est bissectille
False(faux) dans le cas contraire }
{ Fonction permettant de calculer le nombre de jour restants
entre la date de naissance le prochain 31 decembre}
function calcjour(j, m ,a: integer) :integer;
var
jour: integer;
begin
case m of
1 : if bissect(a) then
jour:=31-j+335
else
jour:=31-j+334;
2 : if bissect(a) then
jour:=29-j+306
else
jour:=28-j+306;
3 : jour:=31-j+275;
4 : jour:=30-j+245;
5 : jour:=31-j+214;
6 : jour:=30-j+184;
7 : jour:=31-j+153;
8 : jour:=31-j+122;
9 : jour:=30-j+92;
10 : jour:=31-j+61;
11 : jour:=30-j+31;
12 : jour:=31-j;
end;
calcjour:=jour;
end;
{ Fin de la fonction permettant de trouver le nombre de jour
entre la date de naissance et le prochain 31 decembre et elle
renvoie donc ce nombre de jour qui serra determinant plutard }
begin
clrscr;
a:=0;
m:=0;
writeln('Entrer votre date de naissance');
writeln('Le format est le suivant : jj/mm/aaaa');
{ Saisie de la date de naissance }
gotoxy(5,5);
readln(jj);
gotoxy(7,5);
write('/');
readln(mm);
gotoxy(10,5);
write('/');
readln(aaaa);
{ Fin de la saisie de la date de naissance }
{ Debut du calcul de l'age proprement dit }
an:=aaaar-aaaa;
bis:= (an div 4) + 1;
{ Calcul d nombre de jours passe sur terre }
jour:=calcjour(jj,mm,aaaa) + 365*an + bis + (365 - calcjour(jjr,mmr,aaaar)) ;
{ Calcul de l'age au format : aa an(s) mm mois jj jour(s)
on suppose qu'un mois a environ 30 jours }
if jour >= 365 then
begin
a:= (jour div 365 ) - 1;
jour:=(jour mod 365) - (a div 4) ;
end;
if jour >= 31 then
begin
m:= jour div 30;
jour:= jour mod 30;
end;
jour:=jour-1;
{ Affichage de l'age au format decrit ci-dessus
avec une approximation de plus ou mois 6 jours}
if a<=1 then
if jour<=1 then
Writeln('Tu as ',a, ' an ', m ,' mois ', jour , ' jour' )
else
Writeln('Tu as ',a, ' an ', m ,' mois ', jour , ' jours' )
else
if jour<=1 then
Writeln('Tu as ',a, ' ans ', m ,' mois ', jour , ' jour' )
else
Writeln('Tu as ',a, ' ans ', m ,' mois ', jour , ' jours' );
readln;
end. |
Partager