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

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

Войти
Регистрация
Восстановить пароль
 
Ирина 379
0 / 0 / 0
Регистрация: 15.10.2014
Сообщений: 29
#1

Найти треугольник наибольшей площади с вершинами в данных точках - C++

19.11.2014, 00:07. Просмотров 973. Ответов 6
Метки нет (Все метки)

Дано натуральное число n. С помощью двумерного действительного числового массива [xij]i=1,2; j=1,...,n на плоскости задано n точек так, что x1j, x2j – координаты j-й точки. Найти треугольник наибольшей площади с вершинами в этих точках.

Помогите пожалуйста дописать, не получается, заранее спасибо!

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
#include <iostream>
#include <cmath>
 
using namespace std;
int main()
{
    int Ax,Ay,Bx,By,Cx,Cy,n;
    int mas[2][10];
    cout<<"n=";
    cin>>n;
    double S;
    for (int i=0;i<2;i++)
        for( int j=0;j<n;j++)
        cin>>mas[i][j];
    for (int i=0;i<2;i++)
        for( int j=0;j<n;j++)
        {
    mas[0][0]=mas[Ax][Ay];
    mas[0][1]=mas[Bx][By];
    mas[0][n-1]=mas[Cx][Cy];
        }
    S=0.5*abs((Ax-Cx)*(By-Cy)-(Bx-Cx)*(Ay-Cy));
    
    cout<<S;
system ("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 00:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти треугольник наибольшей площади с вершинами в данных точках (C++):

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

Найти треугольник с наибольшей площадью с вершинами в точках заданных координатами (подправить код) - C++
Доброго времени суток! Условие таково: Дано натуральное число n. C помощью двумерного действительного числового массива...

Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (2,1) (3,0) (-1,0) - C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 3. Написать функцию булевского типа,...

Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0) - C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 2. Написать функцию булевского типа,...

Геометрия (Найти все четырёхугольники, являющиеся выпуклыми, с вершинами в этих точках) - C++
Дано N точек на плоскости.Найти все четырёхугольники, являющиеся выпуклыми, с вершинами в этих точках. я пытался через сравнивание...

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

6
nmcf
5534 / 4844 / 1641
Регистрация: 14.04.2014
Сообщений: 19,651
19.11.2014, 08:29 #2
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
int main()
{
    int Ax,Ay,Bx,By,Cx,Cy,n;
    int mas[10][2];
    cout<<"n=";
    cin>>n;
    double S, A, B, C, p;
 
    for (int i=0;i<n;i++) cin >> mas[i][0] >> mas[i][1]; // ввод пары x и y
 
    for (int i = 0; i < n - 2; i++)
        for (int j = i + 1; j < n - 1; j++)
            for (int k = j + 1; k < n; k++)
            {
                // Вершины
                Ax = m[i][0]; // x
                Ay = m[i][1]; // y
                Bx = m[j][0];
                By = m[j][1];
                Cx = m[k][0];
                Cy = m[k][1];
                // Стороны
                A = sqrt((Ax - Bx) * (Ax - Bx) + (Ay - By) * (Ay - By));
                B = sqrt((Ax - Cx) * (Ax - Cx) + (Ay - Cy) * (Ay - Cy));
                C = sqrt((Bx - Cx) * (Bx - Cx) + (By - Cy) * (By - Cy));
                p = (A + B + C) / 2; // полупериметр
                S = sqrt(p * (p - A) * (p - B) * (p - C)); // площадь
            }
    
    cout << S;
 
    system ("pause");
    return 0;
}
0
Ирина 379
0 / 0 / 0
Регистрация: 15.10.2014
Сообщений: 29
19.11.2014, 19:31  [ТС] #3
cпасибо, Вам, огромное!!!!!
0
Ирина 379
0 / 0 / 0
Регистрация: 15.10.2014
Сообщений: 29
23.11.2014, 22:34  [ТС] #4
Написали код, но не понятно, что производится в цикле (там где i,j,k). И почему вершины задаются именно таким набором координат? Заранее спасибо!!!!
Условие задачи:
Дано натуральное число n. С помощью двумерного действительного числового массива [xij]i=1,2; j=1,...,n на плоскости задано n точек так, что x1j, x2j – координаты j-й точки. Найти треугольник наибольшей площади с вершинами в этих точках.
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    int Ax,Ay,Bx,By,Cx,Cy,n;
    int m[10][2];
    cout<<"n=";
    cin>>n;
    double S, A, B, C, p;
 
    for (int i=0;i<n;i++) cin >> m[i][0] >> m[i][1]; // ввод пары x и y
 
    for (int i = 0; i < n - 2; i++)
        for (int j = i + 1; j < n - 1; j++)
            for (int k = j + 1; k < n; k++)
            {
                // Вершины
                Ax = m[i][0]; // x
                Ay = m[i][1]; // y
                Bx = m[j][0];
                By = m[j][1];
                Cx = m[k][0];
                Cy = m[k][1];
                // Стороны
                A = sqrt(double((Ax - Bx) * (Ax - Bx) + (Ay - By) * (Ay - By)));
                B = sqrt(double((Ax - Cx) * (Ax - Cx) + (Ay - Cy) * (Ay - Cy)));
                C = sqrt(double((Bx - Cx) * (Bx - Cx) + (By - Cy) * (By - Cy)));
                p = (A + B + C) / 2; // полупериметр
                S = sqrt(p * (p - A) * (p - B) * (p - C)); // площадь
            }
    
    cout << S;
 
    system ("pause");
    return 0;
}
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
24.11.2014, 04:08 #5
Цитата Сообщение от Ирина 379 Посмотреть сообщение
не понятно, что производится в цикле (там где i,j,k)
Циклы проходят по все возможным треугольникам, построенным на заданных точках.

В цикле производится вычисление площади каждого треугольника по формуле Герона. Однако программа не дописана: с вычисленной площадью ничего не делается. Т.е. она не проверяется на максимальность, как того требует условие задачи.

Программа просто выводит самую последнюю вычисленную площадь, которая в общем случае не будет максимальной.

Цитата Сообщение от Ирина 379 Посмотреть сообщение
почему вершины задаются именно таким набором координат
Не понял вопроса. Каким "именно таким"? Вершины задаются набором координат, прочитанным из входного потока.
1
nmcf
5534 / 4844 / 1641
Регистрация: 14.04.2014
Сообщений: 19,651
24.11.2014, 08:39 #6
Да, забыл про максимум. Там пару строчек добавить. Допили.
1
Ирина 379
0 / 0 / 0
Регистрация: 15.10.2014
Сообщений: 29
25.11.2014, 00:39  [ТС] #7
Спасибо большое. Дописала, получилось
0
25.11.2014, 00:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2014, 00:39
Привет! Вот еще темы с ответами:

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

Треугольник задан своими вершинами (x1,y1),(x2,y2),(x3,y3). Найти высоты треугольника. - C++
Буду очень признателен, если поможете безрукому... 1. Треугольник задан своими вершинами (x1,y1),(x2,y2),(x3,y3). Найти высоты...

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

Среди заданных треугольников найти треугольник максимальной площади - C++
N треугольников плоскости заданы длинами своих сторон. Найдите треугольник максимальной площади.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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