Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 7


DTI,DT2:double;

function JD(Y,M:integer;

DT:double):double;

var

a,b,mm,yy:integer;

c:longint;

begin

b:=0;

yy:=Y;

mm:=M;

if M<3 then begin yy:=yy-l;

mm:=mm+12; end;

a:=yy div 100;

if (Y+M/100.+DT/10000)>1582.1015 then b:=b+2-a+(a div 4};

c:=trunc(365.25*yy);

if yy<0 then c:=trunc(365.25*yy-0.75);

JD:=c+trunc(30.6001*(mm+1))+DT+1720994.5+b;

end;

function dif_time(Yl,Ml:integer;

DTI:double;

Y2,M2:integer; DT2:double):double;

{ Определение интервала времени между }

{ двумя григорианскими датами }

{ Y1,Y2 - годы М1,М2 - месяда }

{ целые части DTI, DT2 - дни }

{ дробные части DTI, DT2 - время дня } begin

dif_time:=abs(JD(Y1,M1,DT1)-JD(Y2,M2,DT2)) ;

end;

begin

clrscr;

write(' Задайте год григорианского календаря : ');

readln(Yl);

write(' Задайте месяц григорианского календаря : ');

readln(Ml);

write(' Задайте день и время : ');

readln(DTl);

write(' Задайте год григорианского календаря : ');

readln(Y2);

write(' Задайте месяц григорианского календаря : ');

readln(M2);

write(' Задайте день и время : ') ; readln(DT2);

writeln('Интервал = ',dif_time(Y1,M1,DT1,Y2,M2, DT2):10:0); readln; end.

Задание 9.04. День недели

Составить функцию week_day, определяющую день недели по дате григорианского календаря.

Совет 1 (общий)

Преобразуйте григорианскую дату в юлианский день и воспользуйтесь довольно очевидной формулой:

день недели=(JD+1.5) mod 7

В ее справедливости нетрудно убедиться, вспомнив, что понедельник 1 января условной начальной точки отсчета универсального времени (год 4712 до н. э.) начинался в момент JD=-0 . 5. Приведенная выше формула дает 0 для воскресенья, 1 —для понедельника, 2 — для вторника, ..., 6 — для субботы.

Совет 2 (общий)

Функция week_dayl построена на базе аналогичной фортрановской программы, и сфера ее применения распространяется на даты позднее 15.10.1582.

Программа 9_04.bas

DECLARE FUNCTION JD!(Y%,M%,DT!)

DECLARE FUNCTION WeekDay!(Y%,M%,D%)

REM Определение дня недели




Содержание  Назад  Вперед