Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2008, 20:54   #1
DmT
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 32
Лампочка Перевод номера дня в дату

Всем доброго времени суток
У меня задача:
Дано количество дней от 1 явн 2000 года.
Определить дату(число, месяц и год)(учетом високосных годов).
Нельзя использовать стандартные средства сред программирования, т.е. чистая арифметика.
DmT вне форума Ответить с цитированием
Старый 09.10.2008, 22:12   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, дык..,, дата плюс единица - значит дата плюс один день.
Допустим, количество дней от 1 явн 2000 года = 100;
Код:
var d: TDate;
daycount: Integer;
begin
  daycount:=100;
  d:=StrToDate('01.01.2000');
  d:= d + daycount;
ShowMessage(DateToStr(d));
end;
Результат: '10.04.2000'

//********************
А если высчитывать дни чисто арифметичеки, то:
int(daycount div 365) = количество лет
frac(daycount div 365) = количество оставшихся дней в этом году
Високосный год можно вычислить, например так:
Код:
function is_visokos(dd: Tdate): boolean;
var y,m,d: Word;
begin
  Result := False;
  DecodeDate(dd,y,m,d);
if Frac(y div 4) = 0 then
Result := True;
end;
//т.е. если год делится на 4 без остатка - значит високосный (способов много)
//пишу на "бум", может ошибся где...
Но вся эта арифметика как-то глупо смотрится. Все равно, что вместо
Код:
var i: integer;
i:=strtoint('2')
написать
Код:
case i of
2: str:='2';
end;

Последний раз редактировалось _SERGEYX_; 09.10.2008 в 22:41.
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.10.2008, 12:02   #3
DmT
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 32
По умолчанию

это понятно. Вот еще как найти количество високосных годов?
DmT вне форума Ответить с цитированием
Старый 10.10.2008, 12:09   #4
DmT
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 32
По умолчанию

Visokos_count = (daynum/365) % 4 + 1;
тока будет ошибка примерно раз в через 365 високосных годов...
DmT вне форума Ответить с цитированием
Старый 14.02.2009, 16:12   #5
beso
Пользователь
 
Регистрация: 02.04.2007
Сообщений: 37
По умолчанию

ИЗВИНИЯИУС на етат вапросу не сможите памоч ребията ???

http://programmersforum.ru/showthrea...438#post197438
beso вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нам осталось жить 4 дня JTG Свободное общение 70 22.10.2008 19:11
Первая номер дня в дате mirawoo Microsoft Office Access 3 17.06.2008 15:19
Добавление дня к дате Askat БД в Delphi 2 03.03.2008 11:30
Вычисление даты завтрашнего дня meteora Помощь студентам 3 18.01.2008 11:18
Help!!! диплом через 2 дня!!!! WinD Помощь студентам 3 23.06.2007 20:21