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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 13:44   #1
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию Пересечение отрезков времени

Есть ли в Excel встроенные средства для проверки, пересекаются ли отрезки времени

например одна лампочка горела в интервале времени c t1 до t2

а другая лампочка горела в интервале с t3 до t4

пересекаются ли?
и если пересекаются, то true

банально конечно можно решить, но может кто знает красивый способ
RISagitov вне форума Ответить с цитированием
Старый 21.05.2012, 14:09   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются

решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.05.2012, 14:23   #3
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются

решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.

да, нормально, спасибо
уж лучше чем банальное

Function FuncT(t1,t2,t3,t4):Boolean
if ((t1<t3) and (t3>=t2)) xor ((t1>t3) and (t1>=t4)) then
FuncT=False
goto ex;
FuncT=True
ex:
end FuncT
RISagitov вне форума Ответить с цитированием
Старый 21.05.2012, 17:26   #4
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются

решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.
Правильно ли я реализовал функцию?!
неверно работает
Вы уверены, что если больше, то пересекаются?
может наоборот?

Function CallT(t1, t2, t3, t4) As Boolean
'Функция для проверки пересечения двух диаппазонов дат
'Если есть пересечение, то выдает True
If ((t2 - t3) * (t4 - t1)) > 0 Then
CallT = True
Else
CallT = False
End If
End Function
RISagitov вне форума Ответить с цитированием
Старый 21.05.2012, 18:59   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
неверно работает
Вы уверены, что если больше, то пересекаются?
может наоборот?
Что мешает проверить в окне Immediate?
Код:
?callt(1,3,2,4)
True
?callt(1,5,2,4)
True
?callt(1,2,2,4)
False
Можно проще
Код:
Function CallT(t1, t2, t3, t4) As Boolean
'Функция для проверки пересечения двух диаппазонов дат
'Если есть пересечение, то выдает True
CallT = (t2 - t3) * (t4 - t1) > 0
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение отрезков BoozZzilla Помощь студентам 3 06.04.2012 13:51
Пересечение отрезков Helen236 Паскаль, Turbo Pascal, PascalABC.NET 9 06.04.2012 12:08
C++ Пересечение отрезков Liza Dalbek Помощь студентам 2 22.12.2010 23:20
Пересечение отрезков. Векторное произведение phpcreator Помощь студентам 2 23.06.2010 21:58
Пересечение отрезков Пaвeл Помощь студентам 1 30.04.2010 05:46