function kolday(d: date): integer;
const kd: array [1..12] of integer=(0,31,59,90,120,151,181,212,243,273,304,334);
var res: integer;
begin
{Расcчитаем количество дней в целых годах, с учетом високосных }
res := (d.y-1)*365 + (d.y-1) div 4;
{Прибавим количество дней в целых месяцах прошедших с начала года }
res := res + kd[d.m];
{Если год високосный и месяц даты после февраля нужно прибавить еще один поправочный день}
if (d.y mod 4=0) and (d.m>2) then res := res + 1;
{ Ну и наконец, прибавим количество дней прошедших от начала месяца}
res := res + (d.d-1);
kolday := res;
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, DateUtils, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
EditDay: TLabeledEdit;
EditMon: TLabeledEdit;
Edityear: TLabeledEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function kolday(dd: tdate): integer;
var
Dat: TDate;
begin
Dat:= EncodeDate({y}1, 1, 1); // Собрали дату
result:= DaysBetween(dd, dat); // Посчитали дни прошедшие с 01.01.0001 до текущей даты
end;
procedure TForm1.Button1Click(Sender: TObject);
var
y, m, d: word;
dd: tdate;
begin
d:= StrToInt(EditDay.Text); // Запомнили день
m:= StrToInt(EditMon.Text); // Запомнили месяц
y:= StrToInt(Edityear.Text); // Запомнили год
dd:= EncodeDate(y, m, d); // Собрали дату
// Выводим на заголовок формы подсчитаные дни
Form1.Caption:= IntToStr(kolday(dd)) + ' дней прошло с 01.01.0001 до ' + DateToStr(dd);
end;
end.
function kolday(d: date): integer;
const kd: array [1..12] of integer=(0,31,59,90,120,151,181,212,243,273,304,334);
var res: integer;
begin
{Расcчитаем количество дней в целых годах, с учетом високосных }
res := (d.y-1)*365 + (d.y-1) div 4;
{Прибавим количество дней в целых месяцах прошедших с начала года }
res := res + kd[d.m];
{Если год високосный и месяц даты после февраля нужно прибавить еще один поправочный день}
if (d.y mod 4=0) and (d.m>2) then res := res + 1;
{ Ну и наконец, прибавим количество дней прошедших от начала месяца}
res := res + (d.d-1);
kolday := res;
end;
program CheckDays;
{$APPTYPE CONSOLE}
uses SysUtils;
{Описываем типы}
type day=1..31; mon=1..12; year=1..2000;
date=record
d:day;
m:mon;
y:year;
end;
{Описываем переменную для хранения текущей даты}
var curdat: date;
{Функция вычисления количества дней между d и 01.01.0001}
function kolday(d: date): integer;
const kd: array [1..12] of integer=(0,31,59,90,120,151,181,212,243,273,304,334);
var res: integer;
begin
{Расcчитаем количество дней в целых годах, с учетом високосных }
res := (d.y-1)*365 + (d.y-1) div 4;
{Прибавим количество дней в целых месяцах прошедших с начала года }
res := res + kd[d.m];
{Если год високосный и месяц даты после февраля нужно прибавить еще один поправочный день}
if (d.y mod 4=0) and (d.m>2) then res := res + 1;
{ Ну и наконец, прибавим количество дней прошедших от начала месяца}
res := res + (d.d-1);
kolday := res;
end;
{Основная программа}
begin
{ TODO -oUser -cConsole Main : Insert code here }
{Запрашиваем у пользователя день месяц и год даты}
write('Введите день: ');
readln(curdat.d);
write('Введите месяц: ');
readln(curdat.m);
write('Введите год: ');
readln(curdat.y);
writeln;
{Рассчитываем с помощью функции и выводим на экран искомое количество дней}
writeln('Количество дней между 01.01.0001 и ',curdat.d:2,'.',curdat.m:2,'.',curdat.y:4, kolday(curdat));
readln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.