Halo,

Envoyé par
random
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
|
FUNCTION FACTJOUR(J,M,A:INTEGER):longint;
(*transforme une date en un nombre*)
VAR FACT:REAL;
BEGIN
IF M IN[1,2] THEN
BEGIN
FACT:=(1.0*365*A)+1*J;
FACT:=FACT+(1.0*(31*(M-1)));
FACT:=FACT+(1.0*INT(((A-1)/4)));
FACT:=FACT-(1.0*INT(3/4*INT(((A-1)/100)+1)));
END
ELSE
BEGIN
FACT:=(1.0*365*A)+J;
FACT:=FACT+(1*(31*(M-1)));
FACT:=FACT+(1.0*INT((A/4)));
FACT:=FACT-INT(3/4*INT((A/100)+1));
FACT:=FACT-INT(((0.4*M)+2.3));
END;
FACTJOUR:=round(FACT);
END;
function jourclair(j,m,a:integer):jou;
(*donne en clair le nom du jour d'une date*)
var u:integer;
begin
u:=factjour(j,m,a) mod 7;
case u of
0 : jourclair:='samedi';
1 : jourclair:='dimanche';
2 : jourclair:='lundi';
3 : jourclair:='mardi';
4 : jourclair:='mercredi';
5 : jourclair:='jeudi';
6 : jourclair:='vendredi';
end;
end; |
Moi qui insiste toujours pour que le code soit écrit avec une indentation régulière et cohérente.
De plus,
function jourclair(j,m,a:integer):jou;
renvoie un type jou qui n'est pas défini. Disons string
Debut édition
Pourquoi ne pas faire l'équivalent pour le nom des mois ?
Fin édition
Un peu plus spécialisé : il vaudrait autant transformer la date en valeur de jour julien, qui est universel, et permet de gérer les dates en tenant compte de la modification de l'ancien calendrier en calendrier grégorien (décalage brutal de 10 jours + modification de la détermination des années bissextiles)
Partager