Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Задачка |
Автор: ubiy 7.5.2004, 18:18 |
1. Даны координаты вершин четырехугольника и координаты точки. Определить, находится ли точка внутри четырехугольника. 2. Написать вариант функции calloc(), используя функцию malloc(). |
Автор: Golod 8.5.2004, 09:00 |
По-поводу 1-й задачки, если тебе даны координаты точек, то ты можешь построить сам 4-х угольник, и, например закрасить его. Затем проверяешь координаты точки на цвет, если они совпадают с цветом заливки, то точка попала, если нет, то нет. В Pascal'e это делается элементарно. |
Автор: Dr.Drunk 10.5.2004, 10:13 |
ubiy, по поводу 2 задачки. На сколько я помню, calloc() - переопределение дин. памяти а malloc - выделение. Тогда алгоритм примерно таков Есть дин. массив который надо увеличить/уменьшить Вызываешь свою функцию
- копируешь в выделенный кусок исх. массив - возвращает указатель на нов. массив Если нов. массив больше старого, то нужно занулить элементы за последним из старого, чтобы в них "мусора" не было. |
Автор: Secandr 10.5.2004, 10:40 | ||
Golod Зачем такие сложности? и ещё, если я дам координаты -10000,10000,-998,999 и точку 50,50 ![]() ubiy Первая задача:
Предворительно можно тосортировать x1,x2 и y1,y2 по возрастанию. |
Автор: dargaard 10.5.2004, 13:16 |
Secandr С каких пор 4-угольник (а не прямоугольник) описывается 2 координатами? ubiy А вообще просто надо правильно разбить 4х угольник на 2 треугольника (правильно разбить так как 4х угольник может быть вогнутым). после этого задача сводится к нахождению точки в двух треугольниках. здесь алгоритм о точке и треугольнике http://mcraefamily.com/MathHelp/GeometryPointAndTriangle2.htm тут есть алгоритм о точке и многоугольнике http://www.dfanning.com/tips/point_in_polygon.html |
Автор: Secandr 10.5.2004, 17:01 |
dargaard Скажем так - этостандартная олимпиадная задача. Хотя в общем случае я конечно неправ. |
Автор: ubiy 13.5.2004, 08:10 |
Блаходарю. Буду пробовать. |
Автор: Гость_Eugene 13.5.2004, 08:38 |
Hello, ALL ! 2 Dr.Drunk По поводу calloc() вы ошиблись. Она выделяет память точно так-же как и malloc(), но есть отличие. Перераспределяет память realloc() ! 2 Ubiy Читайте доку по библ-м функциям С . Удачи ! |
Автор: ubiy 17.5.2004, 08:51 |
2 Dr.Drunk Не совсем понятно, как этот алгоритм написать. 2 Гость_Eugene Может знаешь, как решить 2 задачу. |
Автор: Гость_Eugene 17.5.2004, 09:35 |
Посмотрев _синтаксис_ вызова обеих ф-ций, ты и сам её решишь ![]() И не забудь, что calloc _чистит_ выделяемую память. Удачи ! |
Автор: maxim1000 17.5.2004, 11:27 |
можно попробовать что-то вроде этого: есть прямоугольник ABCD (имена вершин - последовательно, т.е. ребра AB,BC,CD,DA), и точка E для того, чтобы точка была внутри пр. достаточно, чтобы (AB,AE)>0 (AD,AE)>0 (CD,CE)>0 (CB,CE)>0 |
Автор: DenDen 18.5.2004, 00:00 |
1.А не проще ли самая дальняя вершина отстоит от точки на величину большую самой длинной стороне прямоугольника? (не рабоет для невыпуклых многоугольников) 2. свести задачу к 2 треугольникам 3. maxim1000,respect довольно остроумно |
Автор: Dr.Drunk 18.5.2004, 10:22 |
2 Гость_Eugene, ну так давненько уже в С не программил ![]() |
Автор: Гость_Eugene 19.5.2004, 13:06 |
Да нет, всё более на "приплюснутом", ![]() Удачи ! |
Автор: ubiy 21.5.2004, 08:19 |
2 Гость_Eugene Нет, не понятно. |