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



       Фландрский Бувье порода для выпаса коров. |   

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


var

a,b,mm,yy:integer;

с: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;

begin

clrscr;

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

readln(Y);

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

readln(M);

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

readln(DT);

write(Y:4,M:3, ' ',DT:3:1);

jdl:=JD(Y,M,DT);

writelnC JD =', jdl:15:5) ;

readln; end.

Задание 9.02. Вычисление дат григорианского календаря

Составить подпрограмму GD, вычисляющую дату григорианского календаря по юлианской дате, представленной вещественным числом JD.

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

Учитывая высокое качество алгоритмов Меёса, воспользуемся его же алгоритмом для обратного преобразования дат. Мы тщательно проверили его на большом количестве прямых и обратных преобразований григорианских и юлианских дат. В приведенных ниже формулах сохранены обозначения Меёса.

Вычислим JD+0.5 и обозначим через z целую часть, а через F — дробную. Если z > 2299161, то вычислим:

a=int((Z-1867216.25)/36524.25) A=Z+l+a-int(a/4) при z < 2299161 положим

A=Z

В=А+1524

C=int((B-122.1)/365.25

D=int(365.25*C)

E=int((B-D)/30.6001)

DT=B-D-int(30.6001*E) Номер месяца

M=Е-1, если E<13.5

M=Е-13,если Е>13.5 Номер года

Y=C-4716,если м>2.5

Y=C-4715,если М<2.5

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

DECLARE SUB GD(jd!,y%,m%,DT!)

REM Преобразование юлианской даты JD в дату григорианского

КЕМ календаря - Y (год), М (месяц),

REM DT (день и часть времени, прошедшую от начала суток

CLS

INPUT "Задайте юлианскую дату : ",jd

GD jd,y%,m%,DT

PRINT USING "год = ##### месяц = ## день и время = ####";y%;m%;DT

END

SUB GD(jd,y%,m%,DT)

' Восстановление даты григорианского календаря

' по юлианской дате jd. Результаты заносятся в




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