program Days; {$N+,E+}
var
r,f:comp;
y,d,m:integer;
procedure pause; assembler;
asm
mov ah,8
int 21h
or al,al
jne @
int 21h
@:
end;
procedure pro80;
var
w:byte;
st:string[11];
begin
f:=365*y+d+31*(m-1);
if m<=2 then
begin
f:=f+trunc((y-1)/4);
f:=f-trunc(3*(trunc((y-1)/100+1))/4)
end
else begin
f:=f-trunc(0.4*m+2.3)+trunc(y/4);
f:=f-trunc(3/4*(trunc(y/100)+1))
end;
w:=trunc(f-trunc(f/7)*7);
case w of
0: st:='Воскресенье'; 1: st:='Понедельник';
2: st:='Вторник'; 3: st:='Среда'; 4: st:='Четверг';
5: st:='Пятница'; 6: st:='Суббота'
end;
writeln('Этот день --- ',st); writeln
end;
procedure read_dt;
const sp='Введите день, месяц, год: [dd mm yyyy]: ';
begin
write(sp); read(d,m,y); pro80
end;
begin
writeln; write('Определение дня недели и ');
writeln('числа дней между датами.'); writeln;
read_dt; r:=f; read_dt;
writeln('Между этими датами -- ',
abs(f-r):15:0,' дней.'); pause
end { Days }.