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

Определить процедуру вычисления площади треугольника по координатам его вершин - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа нахождения максимумов в диагоналях матрицы 5х5 http://www.cyberforum.ru/cpp-beginners/thread188170.html
Помогите пожалуйста решить задачу: Написать на СИ программу нахождения максимумов в диагоналях матрицы 5х5
C++ Вычислить сумму элементов массива Вычислить сумму элементов массива а1+...+аn на языке Си. заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread188166.html
C++ Кольцевые Списки.
Люди помогите. Понимаю что программы здесь никто не пишет. Но все же. Не могу разобраться. Вот задание. Реализовать функции очереди типа кольцо. Вывод всех элементов, чтобы было видно где маркер. Движение маркера по часовой стрелке. Добавление после маркера, удаление после маркера. Никак не могу понять как это реализовать в Си.
C++ "Приближенное вычисление интеграла"
Задание 1.9 Числовые данные под буквой "б" Извините за плохое фото, но вроде читаемо
C++ Найти обратную матрицу и умножить ее на вектор http://www.cyberforum.ru/cpp-beginners/thread188159.html
Очень нужна помощь для нахождения обратной матрицы на С++. Дело в том что мне нужно реализовать такую задачу: найти обратную матрицу и умножить ее на вектор. каким методом лучше находить обратную матрицу и какой алгоритм нахождения...помогите пожалуйста.
C++ Реализовать транслитерацию строки задача№1 Дан текст в строке.Сделать транслитерацию єтой строки. задача №2 дан текст строки. Если в строке больше одного знака арифметической операции, то уменьшить последовательность до одного.( например, 3+++++7 заменить на 3+7, если 3+ * 9 то оставить 3+*9) подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
09.11.2010, 12:17     Определить процедуру вычисления площади треугольника по координатам его вершин
Для выпуклого можно еще проще посчитать:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//////////////////////////////////////////////////////////////////////////////////////
#include <complex>
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef double                  T_coord;
typedef std::complex<T_coord>   T_vertice;
typedef std::vector<T_vertice>  T_vertices;
//////////////////////////////////////////////////////////////////////////////////////
T_coord  det(T_vertice  A, T_vertice  B)
{
    return  A.real() * B.imag() - B.real() * A.imag();
}
//////////////////////////////////////////////////////////////////////////////////////
struct  T_get_triangle_signed_area
{
    T_coord  operator() (T_vertice  A, T_vertice  B)
    {
        return  det(A, B) / 2.0;
    }
};
//////////////////////////////////////////////////////////////////////////////////////
T_coord  get_polygon_area(T_vertices&  polygon_vertices)
{
    //Добавляем в конец вектора polygon_vertices его первый элемент.
    polygon_vertices.push_back(polygon_vertices.front());
    
    //Теперь находим ориентированные площади треугольников, образованных 
    //соседними вершинами (считая их векторами с началом в начале координат), 
    //и складываем их.  
    return abs
        (
            std::inner_product
                (
                    polygon_vertices.begin(), polygon_vertices.end() - 1,
                    polygon_vertices.begin() + 1, 0.0, 
                    std::plus<T_coord>(), T_get_triangle_signed_area()
                )
        );
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const int VERTICES_COUNT_MIN = 3;
    int n = 0;
    do
    {
        std::cout << "Введите число вершин многоугольника >= "
                  << VERTICES_COUNT_MIN
                  << ": ";
 
        std::cin >> n;    
    }while(n < VERTICES_COUNT_MIN);
 
    std::cout << "Введите координаты "
              << n
              << " вершин выпуклого многоугольника"
              << std::endl
              << "(в порядке последовательного обхода границы):"
              << std::endl;
 
    T_vertices  polygon_vertices;
    for(int i = 0; i < n; ++i)
    {
        std::cout << std::endl
                  << '\t'
                  << "X"
                  << i + 1
                  << " = ";
 
        T_coord  X = 0;        
        std::cin >> X;        
 
        std::cout << '\t'
                  << "Y"
                  << i + 1
                  << " = ";
 
        T_coord  Y = 0;        
        std::cin >> Y;
 
        polygon_vertices.push_back(T_vertice(X, Y));
    }
 
    std::cout << "Площадь заданного выпуклого "
              << n
              << "-угольника равна: "
              << get_polygon_area(polygon_vertices)
              << std::endl;             
}
Добавлено через 33 минуты
Вообще-то для невыпуклого эта программа тоже годится.
 
Текущее время: 05:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru