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

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

Войти
Регистрация
Восстановить пароль
 
Kuzichka
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 32
#1

Среди треугольников с вершинами в заданном множестве точек на плоскости - C++

25.03.2013, 14:53. Просмотров 1015. Ответов 7
Метки нет (Все метки)

Среди треугольников с вершинами в заданном множестве точек на плоскости указать такой, стороны которого содержат максимально число точек заданного множества.

Как я поняла сначала создать два массива координаты X и Y
Потом перебираем точки
Первый цикл: что бы тч не лежали на одной прямой...
А дальше... что??(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2013, 14:53     Среди треугольников с вершинами в заданном множестве точек на плоскости
Посмотрите здесь:

C++ Даны целые числа. Выяснить, найдутся ли среди точек четыре таких, которые являются вершинами квадрата
C++ В заданном множестве точек плоскости найти количество точек в каждой из четвертей
Построить такие два треугольника с вершинами в заданном множестве точек на плоскосли, из которых один лежал бы строго внутри другого C++
Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного остроугольного треугольника, вычислить его площадь. Где ошибка? C++
В данном множестве точек узнать, какие из них создадут треугольник наименьшей площади C++
C++ Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
C++ Среди заданных точек на плоскости найти ту, у которой расстояние суммы равно наибольшему от остальных точек
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 15:59     Среди треугольников с вершинами в заданном множестве точек на плоскости #2
Kuzichka, можно один двумерный) или же массив структур.
1. определяем и заполняем массив точек.
2. начинаем цикл по 3 точкам.
2.1 начинаем цикл по первой точки
2.2 начинаем цикл по второй точке в тоже время параметр цикла не должен брать первую выбранную точку.
2.3 тоже 2.2 только для третьей( в общем нужно добиться чтобы точки были разными)
3. проверка на "треугольность" точек(чтоб не лежали на одной прямой)
4. далее задаем по точкам некую фигуру ограниченная 3мя функциями(прямыми y = ax + b)
5. далее еще один цикл который перебирает все точки и ищет те, при которых выполняется неравенство (y <> ax + b)
6. если такое кол-во точек больше прежнего, то соответственно у нас новый максимум вхождений.

вот еще про треугольник:
Цитата Сообщение от Somebody Посмотреть сообщение
5. Про треугольник.
Математическая часть - векторное и псевдоскалярное произведение.
Реализация - считаются произведения (1,2,3 - вершины треугольника, 0 - точка):
(x1-x0)*(y2-y1)-(x2-x1)*(y1-y0)
(x2-x0)*(y3-y2)-(x3-x2)*(y2-y0)
(x3-x0)*(y1-y3)-(x1-x3)*(y3-y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.
Kuzichka
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 32
25.03.2013, 16:10  [ТС]     Среди треугольников с вершинами в заданном множестве точек на плоскости #3
Спасибо)) Лучше остаться с двумя массивами, так проще как то...) Осталось реализовать)

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <ctime>
#include <cmath>
 
using namespace std;
 
void create(double *a,double *b,int N) //создание массива
{
for (int i=0;i<N;i++)
{
     a[i]=i;
     b[i]=i+N;
}
}
 
 
void get(double *a,double *b,int N) //Поиск трех злостных точек
{
    tpoint T1,T2,T3; //три точки
 
 
    for (int i=0;i<N;i++)  //Анализ всех комбинаций для построения треугольиков
        for (int j=i+1;j<N;j++)
            for (int k=j+1;k<N;k++)
    {

Начало правильное?? )) Я первый раз пишу на на С++ будьте снисходительны))
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 16:53     Среди треугольников с вершинами в заданном множестве точек на плоскости #4
Цитата Сообщение от Kuzichka Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void create(double *a,double *b,int N) //создание массива
{
for (int i=0;i<N;i++)
{
a[i]=i;
b[i]=i+N;
}
}
вы создаете указатели на переменную а не массив. Если хотите создать динамический массив познакомьтесь с функцией operator new(). А лучше хотя бы какой нибудь курс прочтите, что то типа C++ за 21 день.
Слишком сложно для первой задачи

Добавлено через 2 минуты
и еще что вы хотите с помощью функции get()? поиск 3 точек? а зачем их искать? и начните с главной функции main опишите какие функции хотите видеть в своей программе.
Kuzichka
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 32
25.03.2013, 16:56  [ТС]     Среди треугольников с вершинами в заданном множестве точек на плоскости #5
я думала основную часть так сделать..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void main()
{
system("CLS");
double *Arr1,*Arr2;
int N=9;
Arr1=new double[N];
Arr2=new double[N];
 
create(Arr1,Arr2,N); //Создание массива из N элементов
show(Arr1,Arr2,N); //отображение массива на экране
get(Arr1,Arr2,N); //Поис злых точек
 
}
Добавлено через 1 минуту
но я уже запуталась(
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 17:14     Среди треугольников с вершинами в заданном множестве точек на плоскости #6
Цитата Сообщение от Kuzichka Посмотреть сообщение
create(Arr1,Arr2,N); //Создание массива из N элементов
вы его уже создали вот этими строками:

Цитата Сообщение от Kuzichka Посмотреть сообщение
int N=9;
Arr1=new double[N];
Arr2=new double[N];
а здесь вы его инициализируете:

Цитата Сообщение от Kuzichka Посмотреть сообщение
void create(double *a,double *b,int N)
{
for (int i=0;i<N;i++)
{
a[i]=i;
b[i]=i+N;
}
}
Добавлено через 44 секунды
но это придирки) пока что все хорошо)
Kuzichka
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 32
25.03.2013, 17:18  [ТС]     Среди треугольников с вершинами в заданном множестве точек на плоскости #7
Дальше я планировала сделать поиск точек с помощью get, но вы сказали
" поиск 3 точек? а зачем их искать?" ... и я не знаю, что делать дальше(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 17:29     Среди треугольников с вершинами в заданном множестве точек на плоскости
Еще ссылки по теме:

C++ В заданном множестве точек плоскости найти количество точек в каждой из четвертей
Построить множество треугольников с вершинами в заданных точках согласно условию C++
Из множества точек на плоскости найти точки, образующие параллелограмм с наибольшим количеством точек внутри C++

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

Или воспользуйтесь поиском по форуму:
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 17:29     Среди треугольников с вершинами в заданном множестве точек на плоскости #8
ну смотрите, функцию get() тоже желательно разбить на подзадачи:
1. проверка точек на "треугольность"
2. подсчет точек, а точнее сколько вхождений в данную фигуру при нынешних точках.. кстати проверить точка входит в треугольник из трех точек можно вынести тоже в отдельную функцию.
на подсчет точек тоже необходим массив.
Yandex
Объявления
25.03.2013, 17:29     Среди треугольников с вершинами в заданном множестве точек на плоскости
Ответ Создать тему
Опции темы

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