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

Площадь многоугольника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает, если массив динамический ?! Почему? http://www.cyberforum.ru/cpp-beginners/thread1544476.html
Простая задача, есть текст , удалить из него набор символов, вот код - все работает -> char c = "ky12345ky1234ky123ky12ky1", // некоторый текст cNew =""; // char x...
C++ Вывести на консоль все числа Мерсена в заданном интервале 1. Вывести на консоль все числа Мерсена в заданном интервале. Числом Мерсена называется простое число n, которое представимо в виде n=2p-1, где р – также натуральное число. Например, , . При... http://www.cyberforum.ru/cpp-beginners/thread1544475.html
C++ Как правильно распределить динамическую память?
При запуске программы и вводе строки, в одном случае программа выполняется, а в другом выдает, что прекращена работа программы. Понимаю, что ошибка в распределении памяти, но не пойму точно как...
C++ Вычислить погрешность функции при заданных значениях аргументов дифференциальным способом
Вычислить погрешность функции при заданных значениях аргументов дифференциальным способом Функция: Z=(a-b)^2/2+b a=1.543 b=0.78
C++ Нужно по коду написать описание как на примере http://www.cyberforum.ru/cpp-beginners/thread1544462.html
Вот пример описания: Вначале программы зададим две переменные (LENG и LENN) с размерами 6 и 15, для дальнейшего удобного использования в программе. Для упрощения заполнения количества пропущенных...
C++ Перегрузка оператора сравнения Посмотрите, пжл, правилен ли синтаксис перегрузки оператора сравнения для двух строк: #include <cstdio> class base { public: char bfio,borg; base(char fio,char org) { ... подробнее

Показать сообщение отдельно
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
04.10.2015, 21:25
Любой выпуклый многоугольник можно разбить на треугольники следующим образом (см. вложение)
В коде это выглядит так:
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
#include "stdafx.h"
#include <Windows.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
class Point {
    //VARIABLES
    public: 
        int x;
        int y;
    //CONSTRUCTORS
    public: 
        Point(int x, int y) {           
            this->x = x;
            this->y = y;
        }
};
 
float TriangleSquare(Point& A, Point& B, Point& C);
float Distance(Point& A, Point& B);
 
int main()
{   
    //вершины выпуклого многоугольника
    const int n = 7;
    Point points[n]{ Point(0,0), Point(2,4), Point(6,5), Point(10,3), Point(11,-1), Point(7, -5), Point(3,4) };
 
    float square = 0;
    //перебор треугольников
    for (int i = 1; i < n - 1; i++) {
        square += TriangleSquare(points[0], points[i], points[i+1]);
    }
    cout << "Square: " << square << endl;
    system("pause");
    return 0;
}
 
float TriangleSquare(Point& A, Point& B, Point& C) {
    float AB = Distance(A, B);
    float BC = Distance(B, C);
    float AC = Distance(A, C);
    float p = (AB + BC + AC) / 2;               //половина периметра
    return sqrt(p*(p - AB)*(p - BC)*(p - AC));  //Герон
}
 
float Distance(Point& A, Point& B) {
    return sqrt(pow(A.x - B.x, 2) + pow(A.y - B.y, 2)); 
}
0
Миниатюры
Площадь многоугольника  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru