Svp aide probléme en pascal

Fermé
Med awax - 19 oct. 2010 à 17:09
 Med awax - 20 oct. 2010 à 14:59
Bonjour,

le programme consiste à chercher le jour de la se maine d'une date donée , sachant par exemple que le 01/12/1997 convient à un lundi , g fait le code et ç amarche pour les dates supérieure à 1997 mais pour les dates inférieures ça marche pas donc sachanr que mon raisonnement consiste à déterminer le nbre des jours entre 01/12/1997 et la date donnére puis le jour est celui de (nbr_jours mod 7);

svp je suis urgent , merci d'avance

program dates;
uses wincrt;

type tab=array [0..20] of integer;
tab_j=array [0..10]of string;

var
tj:tab_j;
tm:tab;

nbj,i,jours,mois, anne,j,nb,k:integer;







begin
tj[0]:='lundi' ; tj[1]:='mardi' ;tj[2]:='mercredi' ;tj[3]:='jeudi' ;tj[4]:='vendredi' ;tj[5]:='samedi' ;tj[6]:='dimanche';
tm[0]:= 31; tm[1]:= 28;tm[2]:= 31;tm[3]:=30 ;tm[4]:= 31;tm[5]:=30 ;tm[6]:= 31;tm[7]:=31 ;tm[8]:=30 ;tm[9]:= 31;tm[10]:=30 ;
tm[11]:=31 ;

writeln('donner la date');
readln(jours,mois,anne);
nbj:=0;

for i:=mois to 12 do
nbj:=nbj+tm[i-1];

nbj:=nbj-jours+1;

if (anne mod 4 =0 )then nb:=366-nbj else nb:=365 -nbj;
nbj:=0;

if (anne > 1997 ) then
begin
for i:=1998 to (anne-1) do
begin
if (i mod 4) = 0 then


nbj:=nbj+366

else nbj:=nbj+365;
end;

nbj:=nbj+31+nb;

end

else if (anne <1997) then
begin
for i:=anne to 1997 do
begin
if (i mod 4) = 0 then
begin
nbj:=nbj+366;

end
else nbj:=nbj+365;
end;
nbj:=nbj-30-nb;
writeln(nbj);
end
else nbj:=31-(365-nb);
j:=nbj mod 7;






writeln('la date convient à un ', tj[j]);



end. 


A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
19 oct. 2010 à 19:32
En fait ton problème semble lié à ta date de référence...

Si tu n'arrives pas à gérer ton cas if (anne < 1997), tu peux changer de date de référence, par exemple prendre le lundi 20 décembre 1582, date du début d'application du calendrier Grégorien en France (aller plus loin dans le passé nécessiterai de prendre en charge le calendrier Julien).
Ainsi ton cas if (anne < 1583) pourrait se résumer en un message d'erreur "Pas de prise en charge du calendrier Julien".

Une autre date de référence qui peut être prise est le jeudi 1er janvier 1970 (l'heure "zéro" des ordinateurs actuels).
0
ok merci votre proposition fera l'affaire mais mon prof exige que la date référence soit le
01/12/1997 lol ,, mais merci en tt cas :)
0