Определение дня недели по дате — Pascal(Паскаль)

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 }.

Leave a Comment

43 + = 49