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

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

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

Найти вершины наибольшего прямоугольника - C++

18.12.2012, 17:59. Просмотров 425. Ответов 10
Метки нет (Все метки)

Подскажите,пожалуйста, с задачкой:
Заданы 6 точек: (238,306), (306, 340), (340, 102), (136, 0), (408, 136), ( 34, 204) . Найти вершины наибольшего прямоугольника
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 17:59     Найти вершины наибольшего прямоугольника
Посмотрите здесь:

Найти координаты четвертой вершины прямоугольника - C++
У меня задание такое: Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти...

Найти координаты четвертой вершины прямоугольника - C++
Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой...

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

Определить координаты четвертой вершины прямоугольника - C++
Пусть даны координаты трех вершин прямоугольника. Определите координаты четвертой вершины.#include<stdio.h> #include<conio.h> int...

Вычислить координаты четвертой вершины прямоугольника - C++
Даны числа x1, y1, x2, y2, x3, y3 – координаты трёх каких-то вершин прямоугольника. Вычислить и напечатать координаты четвёртой вершины ...

Определить, какие вершины достижимы из заданной вершины S - C++
Подскажите алгоритм для этой задачи, пожалуйста. Достижимые вершины Имя входного файла: graph.in Имя выходного файла: graph.out...

Найти координаты 4 вершины - C++
Та же самая задача, только на Си http://www.cyberforum.ru/turbo-pascal/thread517467.html помогите исправить ошибки, уже умучелся с ней...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 18:02     Найти вершины наибольшего прямоугольника #2
Наибольшего по площади? Или что?
heaventy_angel
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 11
18.12.2012, 18:06  [ТС]     Найти вершины наибольшего прямоугольника #3
Да, наибольшего по площади
ArtMaster
26 / 24 / 3
Регистрация: 27.10.2012
Сообщений: 74
18.12.2012, 18:38     Найти вершины наибольшего прямоугольника #4
Сорри
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 18:52     Найти вершины наибольшего прямоугольника #5
А по-моему тут даны случайные точки и нужно перебрать все варианты(18 треугольников). Или я ошибаюсь?

Добавлено через 10 минут
Для каждого варианта выглядит примерно так:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
using namespace std;
 
struct point
{
    double x,y;
    double maxX, maxY;
};
 
static point pnt[]=
{
    {238,306},
    {306, 340},
    {340, 102},
    {136, 0},
    {408, 136},
    {34, 204}
};
 
double pl(double x1, double y1, double x2, double y2, double x3, double y3)
{
    double a,b,c,p;
    a = sqrt(pow((x2-x1), 2) + pow((y2-y1),2));
    b = sqrt(pow((x3-x1), 2) + pow((y3-y1),2));
    c = sqrt(pow((x3-x2), 2) + pow((y3-y2),2));
    p = (a+b+c)/2;
 
    return sqrt(p*(p-a)*(p-b)*(p-c));
}
 
int idx(int i)
{
    return (i > 5 ? i - 6 : i);
}
 
int main()
{
    double max = 0;
 
    for (int i = 0; i < 6; ++i)
    {
        double s = pl(pnt[idx(i)].x, pnt[idx(i)].y, pnt[idx(i+1)].x, pnt[idx(i+1)].y, pnt[idx(i+2)].x, pnt[idx(i+2)].y);
 
        if (max < s)
        {
            max = s;
            pnt[0].maxX = pnt[idx(i)].x;
            pnt[0].maxY = pnt[idx(i)].y;
            pnt[1].maxX = pnt[idx(i+1)].x;
            pnt[1].maxY = pnt[idx(i+1)].y;
            pnt[2].maxX = pnt[idx(i+2)].x;
            pnt[2].maxY = pnt[idx(i+2)].y;
        }
    }
 
    for (int i = 0; i < 3; ++i)
        cout << pnt[i].maxX << " " << pnt[i].maxY << " ";
    cout << endl << max << endl;
    system("pause");
    return 0;
}
heaventy_angel
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 11
18.12.2012, 18:55  [ТС]     Найти вершины наибольшего прямоугольника #6
Вы не ошибаетесь, даны случайные точки, и необходимо методом перебора найти наибольший прямоугольник. Огромное спасибо за программу!
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 18:57     Найти вершины наибольшего прямоугольника #7
прямоугольник? Блин, сорри, треугольник нашел.

Сейчас попробую написать для прямоугольника. Схема та же, по сути, найти стороны из координат вершин и найти площадь.
heaventy_angel
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 11
18.12.2012, 18:59  [ТС]     Найти вершины наибольшего прямоугольника #8
Только, как я поняла, программа составлена для нахождения наибольшего треугольника, не так ли?

Добавлено через 29 секунд
Да-да))
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 19:10     Найти вершины наибольшего прямоугольника #9
для прямоугольника в существующем коде для треугольника заменить

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
double pl(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
{
    double a,b,c,d;
    a = sqrt(pow((x2-x1), 2) + pow((y2-y1),2));
    b = sqrt(pow((x3-x1), 2) + pow((y3-y1),2));
    c = sqrt(pow((x3-x2), 2) + pow((y3-y2),2));
    d = sqrt(pow((x4-x3), 2) + pow((y4-y3),2));
 
    return (a == b && d == c ? a*c : a*b);
 
...
 
    double s = pl(pnt[idx(i)].x, pnt[idx(i)].y, pnt[idx(i+1)].x, pnt[idx(i+1)].y, pnt[idx(i+2)].x, pnt[idx(i+2)].y, pnt[idx(i+3)].x, pnt[idx(i+3)].y);
 
...
 
            pnt[3].maxY = pnt[idx(i+3)].y;
            pnt[3].maxY = pnt[idx(i+3)].y;
        }
 
    for (int i = 0; i < 4; ++i)
        cout << "x: " <<  pnt[i].maxX << " y: " << pnt[i].maxY << endl;
    cout << "max: " << max << endl;
heaventy_angel
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 11
18.12.2012, 19:15  [ТС]     Найти вершины наибольшего прямоугольника #10
Благодарю!!! Можно последний вопрос? Вы данную программу писали в Console, ведь так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 19:18     Найти вершины наибольшего прямоугольника
Еще ссылки по теме:

Функция для поиска наибольшего и второго наибольшего элемента вектора - C++
Есть вектор который заполняется рандомно. И нужно найти два элемента - самое большое значение и второе по величине. И главным условием...

Найти площадь прямоугольника - C++
Известны координаты трех точек A(x1,y1),B(x2,y2),C(x3,y3) , которые являются вершинами некоторого прямоугольника. Найти площадь этого...

Найти площадь прямоугольника - C++
пожалуйста помогите разобратся в Рекурсии. не могу понять етот код: #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; ...

Найти координаты четвертой вершины параллелограмма - C++
Привет всем. Вот задали совсем простенькую задачку: Известно, что точки с координатами (x1, y1), (x2, y2), (x3, y3) являются тремя...

Найти координаты четвертой вершины квадрата - C++
1. На плоскости заданы координаты трех вершин квадрата АВСД - вершин А, В и С. Найти координаты четвертой вершины


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

Или воспользуйтесь поиском по форуму:
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 19:18     Найти вершины наибольшего прямоугольника #11
да, именно там.
Компилятор - Microsoft Visual Studio 10
Yandex
Объявления
18.12.2012, 19:18     Найти вершины наибольшего прямоугольника
Ответ Создать тему
Опции темы

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