Задача
Задано стороны [latex]a, b, c, d[/latex] и диагональ [latex]f[/latex] выпуклого четырехугольника. Определить площадь четырехугольника, используя вспомогательную функцию вычисления площади треугольника по формуле Герона.
Входные данные
В одной строке задано 5 действительных чисел [latex] a, b, с, d, f[/latex] [latex](0 < a, b, c, d, f ≤ 100)[/latex], как показано на рисунке.
Выходные данные
Вывести площадь четырехугольника с точностью 4 знака после десятичной точки.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 2 2 2 2 2 | 3.4641 |
2 | 7 7 5 6 2 | 11.6120 |
3 | 9 5 3 2 4 | 2.9047 |
4 | 5 7 2 3 4 | 12.7027 |
5 | 7 8 6 2 5 | 22.0043 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> #include <cmath>//данную библиотеку подключаем для того, чтобы была возможность извлечь корень #include <iomanip>//данную библиотеку подключаем для того, чтобы установить кол-во знаков после запятой using namespace std; int main() { double a,b,c,d,f;//длины сторон треугольника double S1,S2,SO;//площади треугольников и общая площадь соответственно double P1,P2,p1,p2;//периметр и полупериметр соотвественно double G1,G2;//выражение под корнем cin>>a>>b>>c>>d>>f; P1= a+b+f;//периметр первого треугольника p1= P1/2;//полупериметр первого треугольника P2= d+c+f;//периметр второго треугольника p2= P2/2;//полупериметр второго треугольника G1=p1*(p1-a)*(p1-b)*(p1-f);//выражение под корнем S1=sqrt(G1);//пользуясь формулой Герона извлекаем корень //аналогично для второго треугольника G2=p2*(p2-d)*(p2-c)*(p2-f); S2=sqrt(G2); SO=S1+S2;//находим общую площадь фигуры состоящую из двух треугольников cout<<fixed<<setprecision(4)<<SO; return 0; } |
Решение задачи
Дано
Фигура, состоящая из двух треугольников;
Цель
Посчитать площадь данной фигуры;
Идея
Разбить фигуру на два треугольника и посчитать площадь каждого в отдельности, а потом сложить.
Способ решения
- Вспомним формулу Герона [latex] S = \sqrt{p \cdot(p-a) \cdot(p-b) \cdot(p-c)}[/latex].
- Поймем, что нам не хватает некоторых данных, а именно [latex]p[/latex].
- Понимаем, что [latex]p[/latex] — это полупериметр, который находится по формуле [latex]p=\frac{P}{2}[/latex].
- Возникает вопрос, что такое [latex]P[/latex] ? Приходим к выводу, что это периметр.
- Находим формулу периметра, который равен [latex]P=a+b+c[/latex]. Данная формула была подведена под условие нашей задачи.
- После того как мы вывели формулы, можем приступать к решению задачи.
- Подставляя исходные данные в формулы, которые были представлены выше, получаем результат.
- Более подробное описание каждого действия представлено выше в коде. Это сделано для того, чтобы пользователь получал ответы на интересующие его вопросы непосредственно в момент их возникновения.
Ссылки
Задача на e-olymp
Код задачи на ideone
В постановке задачи (и не только там) переменные стоит писать в окружении LaTeX.
В «Способе решения» в некоторых местах не хватает пробелов и есть одна ошибка.
В формуле под корнем * нужно заменить на \cdot
Евгения Викторовна, всё исправил.
Игорь Евгеньевич, всё исправил. Рисунок готов.
Я зачту работу, но «(0 <» это часть формулы и»≤ 100)» — тоже. Исправьте, пожалуйста.
Ставьте пробелы в коде. Иначе всё сливается. И добавьте style=»italic» внутрь тэга text в SVG. Нужно, чтобы обозначения на рисунке выглядели так же как и в формулах в тексте.
И во втором Вашем SVG.