Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Новичёк
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 8
#1

Класс для работы со списком - C++

17.05.2009, 02:02. Просмотров 1759. Ответов 3
Метки нет (Все метки)

разработать класс для работы со списком, включив в него конструктор, деструктор и методы для создания и просмотра элементов списка, а также :
Создать список, в информационной части элементов которого нахо-дятся координаты вершин многоугольника плоскости. Определить, находит-ся ли точка с заданными координатами на одной из сторон многоугольника


Некоторые моменты понимаю, но как сделать всё это через классы и как определить, находится точка в многоугольнике или нет я не знаю

Добавлено через 2 часа 35 минут 1 секунду
Всё создал, но не знаю как определить находится точка на однйо из сторон или нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2009, 02:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс для работы со списком (C++):

Построить класс для работы со списком - C++
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и...

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком. Элемент списка – действительное число. Сформировать список, содержащий неубывающую...

Построить класс для работы с односвязным списком - C++
Доброго времени суток, очень давно не обращался на ваш форум и вот снова прошу помощи. Построить класс для работы с односвязным...

Построить класс для работы с односвязным списком - C++
При решении задач необходимо, без использования STL, описать класс, который используется для представления элементов а) массива с...

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком.Элементы списка действительные числа.Создать два упорядочных по возрастанию списка,слить...

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком. Элементы списка – слова. Создать список, содержащий некоторую последовательность слов....

3
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
17.05.2009, 02:11 #2
находится ли точка на одной из сторон многоугольника...
необходимо проверить принадлежность точки некоторой прямой... составляется уравнение прямой, и, подставляя координаты заданной точки в это уравнение, определяется, принадлежит точка прямой, или нет. Но это не всё. Нужно проверить еще, лежит ли она на отрезке этой прямой. Отрезок - сторона многоугольника, заданная, как я понимаю из описания задачи, своими координатами.

что не понятно?
0
Новичёк
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 8
17.05.2009, 02:15  [ТС] #3
А что за уравнение прямой?
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
17.05.2009, 02:44 #4
Как сделать через классы?

элементарно.

допустим такой примерно класс. в реализацию я углубляться не буду.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class PointList
{
public:
PointList();
PointList(const PointList& pl);
virtual ~Point();
 
void AddPoint(Point pt);
Point getPoint(int index)const;
 
virtual void clear();
}
Далее, в основной программе создаем этот список точек. В цикле вводим откуда-либо координаты вершин многоугольника (лучше последовательно, то есть обязательно, чтобы соседние по вводу вершины многоугольника были соседними и в многоугольнике - то есть имели бы ребро, сторону).

А дальше - собственно алгоритм.

можно реализовать функцию ,которая принимает многоугольник, хранящийся в списке PointList и координаты точки, принадлежность которой к сторонам многоугольника необходимо проверить. Например:

C++
1
2
3
4
bool IsPointOnPolygon(const PointList& pl, const Point& a)
{
...
}
Подразумевается, что первая и последняя точка в списке также соединены ребром. То есть это не набор отрезков, заданных своими координатами, а именно ЗАМКНУТЫЙ многоугольник.

Добавлено через 10 минут 22 секунды
Уравнение прямой, проходящей через 2 заданные точки:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1)
где (x1,y1) и (x2,y2) - координаты двух точек, через которые проходит прямая.
(кажется так)
лучше перепроверить. можно в нете поискать. но вроде я не ошибся.

на бумажке привести подобные и получить уравнение вида:
y=kx+b. Математика, школьный курс.

а далее - подставляем заданную точку в полученное уравнение (в результате приведения подобных мы будем иметь значение коэффициентов k и b). Пусть точка A имеет координаты A(ax,ay). Если подстановка в уравнение прямой вместо x и y координат точки A дает верное равенство, то точка A лежит на этой прямой.

А вот как проверить, лежит ли эта точка на заданном отрезке - сходу сказать не могу. надо немного подумать.

-------
ну и в цикле перебираются попарно вершины многоугольника. как только встречаем соответствие (то есть нашли какую-то сторону, на которой лежит точка), то поиск завершен. можно прямо из цикла вернуть ответ. Ну или можно немного усложнить задачу. Возвратить из функции структуру из двух номеров точек, которые (эти номера) образуют сторону, на которой лежит точка.

Добавлено через 13 минут 0 секунд
А еще можно сделать дополнительную функцию, которая определяет, принадлежит ли точка отрезку.

Мне кажется, что точка O(x,y) принадлежит отрезку AB, если:
1) она принадлежит прямой, проходящей через отрезок AB (через две точки - A и B);
2) ox > = min(ax,bx) и ox < = max(ax,bx). Аналогично и для координаты y: oy > = min(ay,by) и oy < = max(ay,by). То есть координаты этой точки лежат в пределах координат концов отрезка.
1
17.05.2009, 02:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2009, 02:44
Привет! Вот еще темы с ответами:

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком. Элементы списка – действительные числа. Создать два упорядоченных по возрастанию списка,...

Создать класс ListInt для работы со списком целых чисел - C++
Создать класс ListInt для работы со списком целых чисел. В качестве членов-данных рекомендуется брать два элемента (определяющие начало и...

Класс для работы со списком, содержащим информацию о поездах дальнего следования - C++
Выручайте!!! Умоляю.... Построить класс для работы со списком, содержащим информацию о поездах дальнего следования. Элемент списка...

Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет - C++
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru