int Y, int M, int
Функция week_day1.с
int week_dayl( int Y, int M, int D)
{
/********************************/
/* Вычисление дня недели */
/* Возвращаемые значения: */
/* 1 - пон., 2 - вторник,..., 7 -воскр */
int q,m;
q=M+10;
m=(M-14)/12+Y;
return ((13*(q-(q/13)*12)-1)/5+D+77+5* (m%100) /4 +
m/400-(m/100)*2)%7; }
Программа 9_04.pas
program WeekDay;
{ Определение дня недели }
uses Crt;
var
Y,M,D,day:integer;
function JD(Y,M:integer; DT:double):double; 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+l))+DT+1720994.5+b;
end;
function week_day(Y,M,D:integer):integer;
{ Определение дня недели }
{ Y - григорианский год }
{ М - григорианский месяц (1-12) }
{ D - день (1 - 31) }
{ Возвращаемое значение : }
{ 0 - воскр., 1 - понед., 2 - вторник,... }
begin
week_day:=trunc(JD(Y,M,D+1.5)) mod 7; end;
begin
clrscr;
write(' Задайте год григорианского календаря : ') ;
readln(Y);
write(' Задайте месяц григорианского календаря : ') ;
readln(M);
write (' Задайте день : ');
readln(D);
day:=week_day(Y,M,D);
writeln('день недели = ',day);
readln; end.
Задание 9.05. Порядковый день в году
Составить функцию dat_to_ord, вычисляющую порядковый номер дня в году по его дате.
Совет 1 (общий)
Воспользуемся алгоритмом, описанным в книге Меёса. Для обычного года:
N=int(275*M/9)-2*int((М+9)/12)+D-30
Для високосного года:
N=int(275*M/9)-int((М+9)/12)+D-30
Программа 9_05.bas
DECLARE FUNCTION DatToOrd!(y%,M%,D%)
REM Определение порядкового дня в году по
REM текущей дате (у - год, m -месяц, d - день)
CLS
INPUT "Задайте год : ",у%
INPUT "Задайте месяц : ",М%
INPUT "Задайте день : ",D%
PRINT "Порядковый номер дня в году = ";
DatToOrd(у%,M%,D%)
Содержание Назад Вперед