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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2015, 11:46   #1
Jenyyy
 
Регистрация: 11.10.2014
Сообщений: 3
По умолчанию Подсчитать количество точек пересечения прямых

Задано множество прямых на плоскости(коэффициентами своих уравнений). Подсчитать кол-во точек пересечения этих прямых
Jenyyy вне форума Ответить с цитированием
Старый 24.05.2015, 11:50   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Выкладывайте наработки, посмотрим.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.05.2015, 12:07   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Сканирующая прямая в помощь
Poma][a вне форума Ответить с цитированием
Старый 24.05.2015, 13:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Сканирующая прямая в помощь
Думаешь можно приспособить? Сомневаюсь. Все таки множество прямых, а не отрезков
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.05.2015, 23:21   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вот интересное кино.. Нигде не увидел что появился новый ответ.
Приспособить точно можно. Завтра напишу как..
Пардон за столь информативный пост
Poma][a вне форума Ответить с цитированием
Старый 25.05.2015, 10:01   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Можно так :
Загнать все в массив структур с полями : угловой и свободный член.
Потом сортируем его по угловому коэфф.
Дальше говорим, что в переменной ans будет ответ. и присваиваем ему n*n
Затем бежим по массиву и считаем кол-во элементов с одинаковым угловым. Как только он становится уже неодинаковым, вычитаем из ans k*(k-1) (где k - кол-во с одинак)

Вот и все

Можно еще придумать тоже самое с ассоциативным массивом (в среднем случае память будем экономить).. Но сложность останется такой же
Poma][a вне форума Ответить с цитированием
Старый 25.05.2015, 10:24   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

А что Вы скажете по такому случаю, когда, например, у трёх прямых только одна точка пересечения?
Даже у n прямых может быть одна общая точка пересечения ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.05.2015, 10:46   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А мы скажем, что точек 134, но они совпадают
Poma][a вне форума Ответить с цитированием
Старый 25.05.2015, 11:03   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ага, общая точка, совпадение прямых да и n*n чет не то - f(k+1)=f(k)+k; f(1)=0
Цитата:
А мы скажем
а нам не поверят
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.05.2015 в 11:08.
Аватар вне форума Ответить с цитированием
Старый 25.05.2015, 11:23   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Учитывая, что координаты пересечений не целые числа, получаем ещё одну проблему - точность, с которой мы можем сравнивать координаты точек пересечения. При этом придётся вычислять расстояние между точками пересечения: eps - как допустимый радиус, определяющий окрестность точки, в которой все точки пересечения будут совпадать.
Т.о.
- формирование списка, задающего уравнения прямых: a и b;
- тупой перебор систем двух линейных уравнений. Благо, что в одном направлении;
- формирование списка координат точек пересечения. При этом список просматриваем на предмет совпадения координат с заданной точностью. Если нет совпадения, то координаты добавить в список, а иначе - продолжить вычисления. Координаты можно не упорядочивать, и вставлять в голову вместе с подсчитанным числом пересечений;
- вывести подсчитанное число пересечений.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задано множество прямых на плоскости (коэффициентами своих уравнений). Подсчитать количество точек пересечения этих прямых клепэ C# (си шарп) 3 03.11.2013 23:37
Вычисление количества различных точек пересечения двух прямых x3Braid Помощь студентам 1 11.06.2012 17:18
Подсчитать количество равносторонних треугольников с вершинами в заданном множестве точек на плоскости (Delphi) dea_celeste Помощь студентам 4 17.05.2012 15:33
Точки пересечения прямых Вернер Помощь студентам 0 11.05.2012 17:38
подсчитать количество точек пересечения fallti Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 28.06.2010 13:46