![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Рустам |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Мужской Репутация: ![]() ![]() ![]() |
Даны действительные числа a1..a50 эти числа определяют 25 интервалов числовой оси
(a1,a2) , (a3,a4) и тд. имеют ли все данные интервалы общие точки, если да то указать какую нибудь из этих точек Прошу доделать эту прогу пожалуйста,вроде бы на мой взгляд осталось немного, но категорически не успеваю
|
![]() ![]() |
Рустам |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я тебя почти понял)) спасибо завтра попробую
![]() |
passat |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 32 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если не ошибся с пониманием, то у Вас типовая задача на связность областей.
Решается обычно приблизительно так: 1. Заводится массив из N структур(записей) данных (или 2 массива размерностью по N), где ключом являются координаты Ваших точек. Началу отрезка присваивается +1, концу -1. 2. Массив сортируется по ключу. 3. Идем по массиву и считаем сумму +1 и -1. 4. Если сумма достигла 25, то общей точкой будет ключ этой точки. 5. Дополнительно надо проверить не пересекаются ли все отрезки по границе. Если известно, что заданные числа только целые, то имеет смысл преобразовать их к вещественным и добавить к конечным точкам дробную часть. Так Вы избавитесь от проверки пересечения на границе. |
passat |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 32 Пол: Мужской Репутация: ![]() ![]() ![]() |
Опять же если правильно понял условие, то задачу можно решить за один проход по последовательности. (Это решение вытекает из предыдущего).
1.Считываем числа попарно (начало/конец). 2.Среди первой последовательности ищем максимум, а среди второй минимум. 3а.Если максимум не больше минимума, то выводим любое число из полученного интервала. 3б.Если нет, то ВСЕ отрезки не имеют ни одной общей точки. Т.е. хотя бы один отрезок заканчивается раньше чем открывается хотя бы один другой. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 10:07 |