Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 18
1

Найти площадь пятиугольника, вершины которого имеют указанные координаты

20.01.2018, 20:25. Показов 4471. Ответов 7
Метки нет (Все метки)

Даны вещественные числа х1, у1, х2, у2,… х5, у5 – Найти площадь пятиугольника, вершины которого имеют координаты (х1,у1), (х2, у2) … (х5, у5). (Определить функцию для расчета площади треугольника по координатам его вершин).

Помогите написать программу
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2018, 20:25
Ответы с готовыми решениями:

Найти периметр десятиугольника, вершины которого имеют соответственно координаты
Задание:Даны действительные числа x1,y1,x2,y2,…,x10. Найти периметр десятиугольника, вершины...

Даны действительные числа х1, у1, х2, у2, …,х10, у10. Найти периметр десятиугольника, вершины которого имеют соответственно координаты (х1, у1), (х2,
Даны действительные числа х1, у1, х2, у2, …,х10, у10. Найти периметр десятиугольника, вершины...

Найти площадь пятиугольника по длине от центра до вершины
Задача. Напишите программу которая предложит пользователю ввести длину от центра пятиугольника до...

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

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
7
2851 / 1715 / 352
Регистрация: 09.09.2017
Сообщений: 7,226
20.01.2018, 20:53 2
Сначала напишите расчет площади треугольника по длинам его сторон. Например
C
1
double triangle_S( double a, double b, double c);
Потом разбиваете пятиугольник на треугольники. Например, для пятиугольника ABCDE это будут ABC, ACD, ADE. Вычисляете прощадь каждого при помощи предыдущей функции, потом складываете.
Алгоритм я описал, реализация за вами.
0
Заблокирован
20.01.2018, 21:07 3
Не С++, но смысл понятный
Код
s=abs((x1-x2)*(y1+y2)+(x2-x3)*(y2+y3)+(x3-x4)*(y3+y4)+(x4-x5)*(y4+y5)+(x5-x1)*(y5+y1))/2
и не нужен здесь Герон.
0
2851 / 1715 / 352
Регистрация: 09.09.2017
Сообщений: 7,226
21.01.2018, 00:14 4
Это вычисление площади через векторные произведения. Уверены что ТС сумеет объяснить откуда эта формула взялась и почему дает верный результат даже для невыпуклого пятиугольника? А так не спорю, ваше решение быстрее и универсальнее.
0
Заблокирован
21.01.2018, 00:48 5
COKPOWEHEU, а Вы уверены, что площадь по Герону доказывается (выводится) проще, чем площадь трапеции?
А тут их (площадей трапеций) сумма с учетом знаков.
0
2851 / 1715 / 352
Регистрация: 09.09.2017
Сообщений: 7,226
21.01.2018, 01:46 6
Можно еще так считать, через векторные произведения
sum = (x1*y2 - x2*y1 + x2*y3 - x3*y2 + x3*y4 - x4*y3 + x4*y5 - x5*y4 + x5*y1 - x1*y5)/2
Мне безразлично как ТС будет считать, лишь бы написал наконец код и сумел объяснить учителю откуда он взялся.
0
1472 / 936 / 809
Регистрация: 30.04.2016
Сообщений: 3,253
21.01.2018, 21:44 7
Лучший ответ Сообщение было отмечено Nikjee как решение

Решение

Nikjee, здравствуйте! Если предположить, что стороны многоугольника (пятиугольника) не соприкасаются (за исключением соседних - в вершинах) и не пересекаются, то можно поступить так:

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    int n, sum;
    cout << "Enter a number of vertices:\n";
    cout << "n = ";
    cin >> n;
    struct Polygon
    {
        int x;
        int y;
    } data[n];
    cout << "Enter coordinates for each vertex:\n";
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << ": ";
        cin >> data[i].x >> data[i].y;
    }
    data[n].x = data[0].x;
    data[n].y = data[0].y;
    sum = 0;
    for (int i = 1; i < n + 1; i++)
    {
        sum += (data[i-1].x * data[i].y - data[i-1].y * data[i].x);
    }
    cout.precision(2);
    cout << "Polygon area: " << fixed << abs((double)sum / 2) << endl;
    system("pause");
    return 0;
}
0
2851 / 1715 / 352
Регистрация: 09.09.2017
Сообщений: 7,226
22.01.2018, 10:52 8
Fixer_84, Если пересекаются - тоже правильно посчитает. Это реализация алгоритма нахождения площади через векторные произведения, который я уже предлагал.
Но он, как и метод Остап Бонд'а (через трапеции), не удовлетворяет условию ТСа.
Цитата Сообщение от Nikjee Посмотреть сообщение
(Определить функцию для расчета площади треугольника по координатам его вершин).
Мне кажется более вероятным что предполагалось использовать именно Герона или другое явное разбиение на треугольники.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2018, 10:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Вершины треугольника имеют координаты
Вершины треугольника имеют координаты (0:0) (0:а) (b:0).определить лежит ли точка с координатами...

Заданы координаты вершин пятиугольника . Составить программу, определяющую периметр пятиугольника. Вычисление длин стор
Заданы координаты вершин пятиугольника . Составить программу, определяющую периметр пятиугольника....

Найти площадь пятиугольника
даны вещественные числа a.b.c.d.e Найти площадь пятиугольника ,(определить функцию для расчёта...

Найти площадь пятиугольника
Даны вещественные числа а, b, с, d, e. Найти площадь пятиугольника, изображенного на рис.2....


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

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

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