Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ханойская башня http://www.cyberforum.ru/cpp-beginners/thread34494.html
Ханойская башня является одной из популярных головоломок XIX века. Даны три стержня, на один из которых нанизаны восемь колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее....
C++ Нужно доработать задачку на двумерные массивы. #include <iostream> using namespace std; int main () { int desk={0}; int sx,sy; int x,y; cout<<"enter the position Slon:\n"; cin>>sx; cin>>sy; sx=sx-1; http://www.cyberforum.ru/cpp-beginners/thread34493.html
Поясните с кодировкой\локалью при программирование на C++\QT C++
Поясните пару моментов с кодировкой при программирование на QT\C++ Есть кубунту, с дефолтной локалью UTF-8. 1) Правильно ли я понял, внутри тип QString представляем символы в UTF-32 ? 2) Как правильно осуществить запись текста в файл из QTextEdit в кодировке, текущей для ОС. Как пример, я делаю:
Вставить слово после определённого символа (в файл) C++
Надо открыть файл, прочитать из него инфу и вставить после пятого символа какое-то слово (введёное пользователем), если длина первого слова меньше 5, то ничего ен делать... знаю что надо с помощью функции fseek(); поставить указатель после пятого элемента в файл, но что дальше? Заранее спаисбо за помощь! Добавлено через 6 часов 36 минут 45 секунд Вот функция, помогите пожалуйста, он...
C++ Вывод содержимого в файле http://www.cyberforum.ru/cpp-beginners/thread34462.html
Как можно вывести текст с файла на экран и вычеслить количество пробелов построчно? Это мои наброски: #include<stdio.h> #include<string.h> void main() { char s; int i, count=0;
C++ Создание класса Привет народ! Есть задача: создать класс, элементами которого являются число типа long double и переменная логического типа, предусмотреть слдеующие методы: - конструктор; - конструктор по умолчанию; - Перегрузка бинарной и унарной операции "-"; - перегрузка операции ++; Создать производный класс, в котором предусмотреть перегрузку операции << для вывода объекта на экран. Когда-то и сам... подробнее

Показать сообщение отдельно
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
17.05.2009, 02:44
Как сделать через классы?

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

допустим такой примерно класс. в реализацию я углубляться не буду.
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). То есть координаты этой точки лежат в пределах координат концов отрезка.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru