![]() |
|
![]() ![]() ![]() |
|
ubiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.5.2004 Репутация: нет Всего: нет |
1. Даны координаты вершин четырехугольника и
координаты точки. Определить, находится ли точка внутри четырехугольника. 2. Написать вариант функции calloc(), используя функцию malloc(). |
|||
|
||||
Golod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 8.5.2004 Репутация: нет Всего: нет |
По-поводу 1-й задачки, если тебе даны координаты точек, то ты можешь построить сам 4-х угольник, и, например закрасить его. Затем проверяешь координаты точки на цвет, если они совпадают с цветом заливки, то точка попала, если нет, то нет. В Pascal'e это делается элементарно.
|
|||
|
||||
Dr.Drunk |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
ubiy, по поводу 2 задачки.
На сколько я помню, calloc() - переопределение дин. памяти а malloc - выделение. Тогда алгоритм примерно таков Есть дин. массив который надо увеличить/уменьшить Вызываешь свою функцию
- копируешь в выделенный кусок исх. массив - возвращает указатель на нов. массив Если нов. массив больше старого, то нужно занулить элементы за последним из старого, чтобы в них "мусора" не было. --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
Golod Зачем такие сложности? и ещё, если я дам координаты -10000,10000,-998,999 и точку 50,50
![]() ubiy Первая задача:
Предворительно можно тосортировать x1,x2 и y1,y2 по возрастанию. |
|||
|
||||
dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: нет Всего: 25 |
Secandr
С каких пор 4-угольник (а не прямоугольник) описывается 2 координатами? ubiy А вообще просто надо правильно разбить 4х угольник на 2 треугольника (правильно разбить так как 4х угольник может быть вогнутым). после этого задача сводится к нахождению точки в двух треугольниках. здесь алгоритм о точке и треугольнике http://mcraefamily.com/MathHelp/GeometryPo...ndTriangle2.htm тут есть алгоритм о точке и многоугольнике http://www.dfanning.com/tips/point_in_polygon.html -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
dargaard Скажем так - этостандартная олимпиадная задача.
Хотя в общем случае я конечно неправ. |
|||
|
||||
ubiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.5.2004 Репутация: нет Всего: нет |
Блаходарю. Буду пробовать.
|
|||
|
||||
Гость_Eugene |
|
|||
Unregistered |
Hello, ALL !
2 Dr.Drunk По поводу calloc() вы ошиблись. Она выделяет память точно так-же как и malloc(), но есть отличие. Перераспределяет память realloc() ! 2 Ubiy Читайте доку по библ-м функциям С . Удачи ! |
|||
|
||||
ubiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.5.2004 Репутация: нет Всего: нет |
2 Dr.Drunk
Не совсем понятно, как этот алгоритм написать. 2 Гость_Eugene Может знаешь, как решить 2 задачу. |
|||
|
||||
Гость_Eugene |
|
|||
Unregistered |
Посмотрев _синтаксис_ вызова обеих ф-ций, ты и сам её решишь
![]() И не забудь, что calloc _чистит_ выделяемую память. Удачи ! |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
можно попробовать что-то вроде этого:
есть прямоугольник ABCD (имена вершин - последовательно, т.е. ребра AB,BC,CD,DA), и точка E для того, чтобы точка была внутри пр. достаточно, чтобы (AB,AE)>0 (AD,AE)>0 (CD,CE)>0 (CB,CE)>0 -------------------- qqq |
|||
|
||||
DenDen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 25.3.2004 Репутация: нет Всего: нет |
1.А не проще ли самая дальняя вершина отстоит от точки на величину большую самой длинной стороне прямоугольника?
(не рабоет для невыпуклых многоугольников) 2. свести задачу к 2 треугольникам 3. maxim1000,respect довольно остроумно |
|||
|
||||
Dr.Drunk |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
2 Гость_Eugene, ну так давненько уже в С не программил
![]() --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
|||
|
||||
Гость_Eugene |
|
|||
Unregistered |
Да нет, всё более на "приплюснутом",
![]() Удачи ! |
|||
|
||||
ubiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.5.2004 Репутация: нет Всего: нет |
2 Гость_Eugene
Нет, не понятно. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |