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

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

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

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

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

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

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

Построить такой многоугольник с вершинами в заданном на плоскости множестве точек периметр которого максимален - C++
Саламалейкум, парни. Такая задача: Построить такой многоугольник(не обязательно выпуклый) с вершинами в заданном на плоскости множестве...

В заданном множестве точек плоскости найти количество точек в каждой из четвертей - C++
В заданном множестве точек плоскости найти количество точек в каждой из четвертей. Знаете я не могу понять - а как задано это...

В заданном множестве точек плоскости найти количество точек в каждой из четвертей - C++
В заданном множестве точек плоскости найти количество точек в каждой из четвертей

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

В заданном множестве точек найти три пары самых удаленных друг от друга точек - C++
Координаты точки на площади задаются парой действительных чисел. Дано натуральное число n и координаты n точек. Найти три пары самых...

Среди заданных точек на плоскости найти ту, у которой расстояние суммы равно наибольшему от остальных точек - 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)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.
0
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++)
    {

Начало правильное?? )) Я первый раз пишу на на С++ будьте снисходительны))
0
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 опишите какие функции хотите видеть в своей программе.
0
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 минуту
но я уже запуталась(
0
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 секунды
но это придирки) пока что все хорошо)
0
Kuzichka
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 32
25.03.2013, 17:18  [ТС] #7
Дальше я планировала сделать поиск точек с помощью get, но вы сказали
" поиск 3 точек? а зачем их искать?" ... и я не знаю, что делать дальше(
0
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
25.03.2013, 17:29 #8
ну смотрите, функцию get() тоже желательно разбить на подзадачи:
1. проверка точек на "треугольность"
2. подсчет точек, а точнее сколько вхождений в данную фигуру при нынешних точках.. кстати проверить точка входит в треугольник из трех точек можно вынести тоже в отдельную функцию.
на подсчет точек тоже необходим массив.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 17:29
Привет! Вот еще темы с ответами:

Даны целые числа. Выяснить, найдутся ли среди точек четыре таких, которые являются вершинами квадрата - C++
Даны целые числа x1, y1, x2, y2, ...xn, yn.Выяснить, найдутся ли среди точек с координатами (x1;y1), (x2;y2),...(xn;yn) четыре таких,...

Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного остроугольного треугольника, вычислить его площадь. Где ошибка? - C++
Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного остроугольного треугольника, вычислить его...

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

Из множества точек на плоскости найти точки, образующие параллелограмм с наибольшим количеством точек внутри - C++
&quot;Даны N точек на плоскости. Найти среди них точки являющиеся вершинами фигуры, содержащей максимальное число заданных точек. Фигура -...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2013, 17:29
Ответ Создать тему
Опции темы

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