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

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

Восстановить пароль Регистрация
 
heaventy_angel
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 11
18.12.2012, 17:59     Найти вершины наибольшего прямоугольника #1
Подскажите,пожалуйста, с задачкой:
Заданы 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++ Найти координаты 4 вершины
Определить, какие вершины достижимы из заданной вершины S C++
C++ Определить координаты четвертой вершины прямоугольника
Найти координаты вершины прямоугольника, зная одну из них C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
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
Сообщений: 538
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
Сообщений: 538
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
Сообщений: 538
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++
Найти все вершины графа, к которым от заданной вершины можно добраться по пути не длиннее А C++

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

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

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