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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 22:51   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ну хорошо.. Это Вы нахимичили с month.. у Вас осталось year.. или крутить такой же цикл для каждого года или думать...
Кстати, если не секрет, чем вариант из поста#3 не устроил?
Poma][a вне форума Ответить с цитированием
Старый 21.11.2013, 22:59   #12
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Я прошлой ночью мудохался через ifы эти. Что-то там не срочталось. Так tmp в моем варианте и есть сумма дней в году, не понял что не так
Praud вне форума Ответить с цитированием
Старый 21.11.2013, 23:29   #13
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

все, понял. Не заработает
Praud вне форума Ответить с цитированием
Старый 21.11.2013, 23:35   #14
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Ваш вариант тоже не работает, только что попробовал его
Praud вне форума Ответить с цитированием
Старый 21.11.2013, 23:55   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы вариант c IF записал так:
Код:
if (y1>y2) or 
   ((y1 = y2) and (m1 > m2) or ((y1 = y2) and (m1 = m2) and (d1 > d2))) 
then // d1 > d2 ..
если есть сомнения в работоспособности, приведите контрпример (значения y1,m1,d1 и y2,m2,d2) при которых данное сравнение не сработает!

если надо, то по поводу перевода даты в число дней (в юлианскую дату == Julian Date) см. мой пример ТУТ

Последний раз редактировалось Serge_Bliznykov; 21.11.2013 в 23:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 00:11   #16
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Вроде ваш вариант рабочий, только вы скобку в конце потеряли)
Praud вне форума Ответить с цитированием
Старый 22.11.2013, 00:31   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
только вы скобку в конце потеряли)
не исключено! Вы же, в отличие от меня, данную строчку проверили!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 00:57   #18
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Эм, не учтено 2 одинаковые даты. Как тут быть?
Praud вне форума Ответить с цитированием
Старый 22.11.2013, 07:03   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Код:
if (y1>y2) or 
   ((y1 = y2) and (m1 > m2) or ((y1 = y2) and (m1 = m2) and (d1 > d2))) 
then // d1 > d2 ..
Цитата:
Код:
if (y1>y2) or (y1 = y2) and (m1 > m2) or (y1 = y2) and (m1 = m2) and (d1 > d2) then
А разница? Сначала по приоритету будут просчитанны все and..
Получим
Код:
if (y1>y2) or (истина\ложь) or (истина\ложь) then
Хотя возможно старый-добрый паскаль просщитает для y1>y2... и выведет ответ.. НО скобочки тут явно лишнее.. (ИМХО)

Цитата:
Ваш вариант тоже не работает, только что попробовал его
"Но я не верю словам", я верю контрпримерам!

Цитата:
Эм, не учтено 2 одинаковые даты. Как тут быть?
Только 2 варианта :
пофиг / исправить..

просто-тупо-банально написать еще 1 if (y1 = y2) and (m1 = m2) and (d1 = d2) then

UPDATE
Забыл проверять (y1 = y2) and (m1 = m2) and (d1 > d2).. Интересно как я так напутал?

Последний раз редактировалось Poma][a; 22.11.2013 в 07:08.
Poma][a вне форума Ответить с цитированием
Старый 22.11.2013, 08:14   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Хотя возможно старый-добрый паскаль просщитает для y1>y2... и выведет ответ..
нет. это невероятно. даже если выбран короткий расчёт логических выражений, при получении false для первого аргумента, остальные OR будут просчитаны.

Цитата:
А разница? Сначала по приоритету будут просчитанны все and..
да. странно. вчера мне показалось, что где-то приоритет не будет соблюдён без скобок. Но сегодня, посмотрев внимательно, я вижу, что присутствует три блока, объединённых OR, внутри блоков объединение строго по AND.
Вы правы, должно работать и без скобок!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение дат nieves SQL, базы данных 2 24.09.2013 19:45
Сравнение дат Canabalt C++ Builder 0 08.01.2013 16:21
Сравнение дат! RSmile БД в Delphi 0 28.04.2010 20:40
Сравнение дат DimOn4Ik БД в Delphi 5 27.04.2010 19:30
сравнение дат Geddar Общие вопросы Delphi 2 04.06.2008 19:09