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

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

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

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

18.12.2012, 17:59. Просмотров 431. Ответов 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++
Здравствуйте, мои дорогие котаны! На работе просидела всю ночь и весь сегодняшний день, и, видимо, уже плохо соображаю. Потому хочу...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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, ведь так?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
18.12.2012, 19:18 #11
да, именно там.
Компилятор - Microsoft Visual Studio 10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 19:18
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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