Задача
Задано стороны [latex]a[/latex], [latex]b[/latex], [latex]c[/latex], [latex]d[/latex] и диагональ [latex]f[/latex] выпуклого четырехугольника. Определить площадь четырехугольника, используя вспомогательную функцию вычисления площади треугольника по формуле Герона.
Входные данные
В одной строке задано [latex]5[/latex] действительных чисел [latex] a, b, с, d, f [/latex] [latex]( 0 < a, b, c, d, f \leqslant 100 )[/latex], как показано на рисунке.
Выходные данные
Вывести площадь четырехугольника с точностью [latex]4[/latex] знака после десятичной точки.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
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 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { double a,b,c,d,f,p1,p2,S1,S2,S; Scanner in = new Scanner(System.in); a = in.nextDouble(); b = in.nextDouble(); c = in.nextDouble(); d = in.nextDouble(); f = in.nextDouble(); p1=(a+b+f)/2; p2=(c+d+f)/2; S = Math.sqrt(p1*(p1-a)*(p1-b)*(p1-f)) + Math.sqrt(p2*(p2-c)*(p2-d)*(p2-f)); System.out.printf("%.4f",S); } } |
Решение
- Воспользуемся формулой Герона [latex] S = \sqrt{p \cdot(p-a) \cdot(p-b) \cdot(p-c)}[/latex] для каждого из двух треугольников
- Сложим полученные результаты
- Воспользуемся формулой Герона [latex] S = \sqrt{p \cdot(p-a) \cdot(p-b) \cdot(p-c)}[/latex] для каждого из двух треугольников
- Сложим полученные результаты
Важно отметить, что в условие задана точность вычисления. Укажем это в соответствующем месте вывода :
1 |
System.out.printf("%.4f",S); |
Ссылки
Задача на e-olymp
Код задачи на ideone