|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.11.2011, 22:34 | #1 |
Пользователь
Регистрация: 02.11.2011
Сообщений: 25
|
Процедура добавления к дате определенного количества дней
Вечер добрый. Второй день пытаюсь найти ошибку в программе, но безысходно: С клавиатуры вводится дата (число, месяц, год) и количество дней, которое надо прибавить к текущей дате.
Процедура вполне успешно прибавляет дни...проблема в прибавлении месяцев и, как следствие, год. Вот код: Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 03.11.2011 в 08:43. |
03.11.2011, 10:42 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ОМГ...
я бы очень рекомендовал Вам воспользоваться функциями перевода даты в юлианскую (это число дней, прошедших от определённой заданной даты, т.е. ЧИСЛО). прибавление к этому числу нужное количество дней и переведите дату обратно в обычный формат. примерно так: Код:
|
03.11.2011, 11:49 | #3 |
Пользователь
Регистрация: 02.11.2011
Сообщений: 25
|
Вот значит как... Спасибо большое, буду разбираться, поскольку с процедурами и функциями у меня туговато)
|
03.11.2011, 11:53 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Угу. пожалуйста!
и ещё, когда будете разбираться, то функции IsLeapYear и DaysInMonth (вообще полезные весьма) в данном коде используются только для работы функции ValidDate - которая проверяет, нормальную ли дату внёс пользователь. в принципе, если эту проверку написать по другому (или вообще выкинуть) - тогда код уменьшится... |
03.11.2011, 17:30 | #5 |
Пользователь
Регистрация: 02.11.2011
Сообщений: 25
|
В начале я никак не понимал работу вот этой строчки в функции ValidDate:
Код:
Код:
И процедуры Date2julian и Julian2date. Пока я хочу сам в них разобраться)) Но если не получится, то прошу пожалуйста объяснить откуда такие большие числа и такие вычисления... |
03.11.2011, 23:28 | #6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
ValidDate (в переводе с английского "валидная" = корректная дата) принимает значение True (истина) только в том случае, когда дата корректная/допустимая. Очевидно, что когда дата имеет номер дня меньше единицы, или года до 1600 или год больше 3999 - то дата - недопустимая. фунция вернёт False. if Not ValidDate (Not False - это True): - если дата не является допустимой, то then begin WriteLn('Ошибка! Вы ввели не существующую дату!'); программа выдаст сообщение об ошибке... Цитата:
Эти вычисления сделаны за нас с Вами (кем именно я не знаю и даже боюсь предположить...). И суть этих "магических" манипуляций в том, что они работают! А уж как их вывели, почему использовались именно такие константы и вычисления - это весьма замудрённая задачка. и не стоит расшибать лоб в поисках вывода. Этим формулам точно десятилетия (и я не удивлюсь, если им столетия!). сошлитесь на то, что Вы их нашли в интернете. (кстати, это действительно так, я взял эти функции в интернете). Или в книжке (помню много лет назад видел книжку, посвящённую календарям, там присутствовали формулы перевода даты. Не поручусь, что формулы и константы на 100% были такими же, но было что-то весьма и весьма похожее! |
||
04.11.2011, 00:37 | #7 |
Пользователь
Регистрация: 02.11.2011
Сообщений: 25
|
Ай... Вот что значит слишком увлекся)) я брал все три параметра (сказывается дискретная математика), в то время как программа берет один из трех, что Вы мне собственно и напомнили.
Что же до формул, то тут я их тоже на одном из сайтов про юлианский календарь нашел. Просто само понятие юлианский календарь оказалось для меня новым), и еще я хотел найти в этих функциях где прибавляются добавленные дни, что бы отнять их, например (0:29-момент когда я нашел, где это. аж самому смешно со своей глупости). ta, tb, tc получается для разбиения формулы переведения даты... Спасибо, что терпеливо мне все разъяснили. Сейчас я очень жалею, что информатики в школе как таковой считай и не было, а нам тогда было все равно есть она или нет... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подсчет количества дней | ГОСЕАН | Помощь студентам | 26 | 31.10.2011 07:30 |
форма для добавления по дате | maratmm | Microsoft Office Excel | 1 | 21.11.2010 21:34 |
Подсчет количества дней за определенный месяц | konon0405 | Microsoft Office Excel | 5 | 30.03.2010 09:04 |
Как прибавить 20 дней к дате | Talisman | Microsoft Office Excel | 7 | 21.02.2010 23:31 |
Вставка определенного количества пробелов | Klim Bassenger | Microsoft Office Excel | 3 | 01.07.2009 10:11 |