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

Нахождение площади через координаты треугольника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Абстрактный класс чисел http://www.cyberforum.ru/cpp-beginners/thread336728.html
Нужно создать абстрактный класс чисел с виртуальными методами - арифметическими операциями. У этого класса 2 наследника - комплексные числа и дроби. Я написал решение этой задачи, но оно мне...
C++ Рекурсия в различных компиляторах Доброго времени суток. Задача: дано целое число n, нужно получить его битовое представление, развернуть его, и то, что получилось перевести обратно в десятичную систему счисления. Пример:n = 4,... http://www.cyberforum.ru/cpp-beginners/thread336725.html
C++ Ввод данных
В общем есть переменная int year; Юзер должен ввести значение переменной, но мне нужно чтобы он мог ввести максимум четырехзначное число, тоесть как бы ограничить количество вводимых символов
Графы C++
Прочитал про обход графа в глубину, посмотрел реализацию, и тут вопрос а как можно использовать этот обход в глубину?
C++ Матрица Изменение http://www.cyberforum.ru/cpp-beginners/thread336665.html
Здравствуйте! Просьба такая: "Приведите пожалуйста пример как можно расширять границы матрицы". Например из матрицы 3х3 сделать матрицу 3х4 и новый столбец добавленный сразуже обнулить. Я думаю что с...
C++ взять адрес переменной если & стоит перед переменной, то это читается как - " взять адрес этой переменной" а если он стоит после ? подробнее

Показать сообщение отдельно
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
28.07.2011, 15:00
Вот реализация формулы Герона, котрую можно применить для вычисления площади в первом варианте. Но так будет намного дольше.
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
#include <iostream>
#include <fstream>
#include <cmath>
 
struct pt
{
    int x;
    int y;  
};
 
float length(pt a, pt b)
{
    return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); 
}
 
 
int main(int argc, char **argv)
{
    std::ifstream fin("input.txt");
    pt a, b, c;
    fin >> a.x >> a.y
        >> b.x >> b.y
        >> c.x >> c.y;
    
    float aLength = length(b, c);
    float bLength = length(a, c);
    float cLength = length(a, b);
    
    float p = (aLength + bLength + cLength) / 2;
    
    float S = sqrt(p*(p-aLength)*(p-bLength)*(p-cLength));
    
    std::cout << "ÏëîùГ*äü òðåóãîëüГ*ГЁГЄГ*: " << S << std::endl;
 
    return 0;   
}
Добавлено через 15 минут
ДРУГИЕ ВАРИАНТЫ

-----------------------------------------------------------------------------------------------------------
Уравнение прямой вида Ах + By + С = 0 обладает следующим свойством. Если
в него подставить координаты точки, принадлежащей этой прямой, то оно превратится в тождество. Если точку взять из одной из полуплоскостей, на которые прямая делит плоскость, то будет выполняться неравенство Ах + By + С < 0, а если из другой - то Ах + By + С > 0. Выполняем такую проверку для каждой из сторон, противоположной и проверяемой точки. Решение аналогично варианту 2, но требует сопоставления уравнения прямой, проходящей через две точки.
-----------------------------------------------------------------------------------------------------------
Если точка находится строго внутри треугольника, то сумма углов, под которыми
из нее видны стороны, равна 2pi(pi=3.14). Если точка находится вне треугольника, то эта
сумма меньше 2pi.
Долго и трудности с углами.
-----------------------------------------------------------------------------------------------------------
Z-координата (аппликата) векторного произведения векторов, находящихся на
плоскости xOy, равная (х2-x1)(y3-y1) - (x3-x1)(y2-y1) обладает следующим
свойством: если угол поворота от первого вектора до второго составляет от 0 до 180°
по часовой стрелке, она имеет один знак, а если, наоборот, от 0 до 180° против часо-
вой стрелки, ее знак противоположен. Когда векторы коллинеарны, Z-координата
равна 0.
Таким образом, нужно найти три числа: Z-координаты векторных произведений
[DA, DB], [DB, DC], [DC, DA]. Если среди них есть и положительное, и отрицательное, точка лежит вне треугольника, в противном случае - внутри.
Ещё сложнее и
-----------------------------------------------------------------------------------------------------------

И почему в расширенном режиме нет редактора формул????

Добавлено через 4 минуты
К сожалению, нет времени для реализации каждого варианта...

Почитать по этой теме:
site1

Меньшиков Ф. - Олимпиадные задачи по программированию
Порублёв. Алгоритмы и программы. Решение олимпиадных задач
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru