Задача А27. Даны действительные положительные числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. По трём сторонам с длинами [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] можно построить треугольник. Найти углы треугольника.
[latex]a[/latex] | [latex]b[/latex] | [latex]c[/latex] | [latex]\alpha[/latex] | [latex]\beta[/latex] | [latex]\gamma [/latex] | Комментарий |
3 | 4 | 5 | 0,643501 | 0,927295 | 1,570796 | Тест пройден. |
6,8 | 5,2 | 9,3 | 0,801375 | 0,581525 | 1,758693 | Тест пройден. |
7,3 | 5 | 8,1 | 1,091967 | 0,653414 | 1,396212 | Тест пройден. |
Код программы (C):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <stdio.h> #include <math.h> int main() { double a, b, c; // Описание переменных для хранения входных данных. a, b, c - стороны треугольника. scanf ("%lf %lf %lf", &a, &b, &c); // Чтение из стандартного потока ввода. double au, bu, cu; // au, bu, cu - наименования углов, лежащих напротив соответствующих сторон. au = acos((pow(b, 2) + pow(c, 2) - pow(a, 2)) / (2 * b *c)); bu = acos((pow(a, 2) + pow(c, 2) - pow(b, 2)) / (2 * a *c)); cu = acos((pow(a, 2) + pow(b, 2) - pow(c, 2)) / (2 * a *b)); printf ("%lf %lf %lf (в радианах)\n", au, bu, cu); return 0; } |
Код программы (Java):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.io.*; import java.util.*; import java.math.*; class Ideone { public static void main (String[] args) { Scanner in=new Scanner(System.in); double a=in.nextDouble(); double b=in.nextDouble(); double c=in.nextDouble(); double au = (b*b + c*c - a*a) / (2*b*c); double bu = (a*a + c*c - b*b) / (2*a*c); double cu = (a*a + b*b - c*c) / (2*a*b); System.out.format("%f %f %f%n", Math.acos(au), Math.acos(bu), Math.acos(cu)); } } |
По условию задачи необходимо найти углы треугольника (программа высчитывает их в радианах).
Так как изначально в условии задачи сказано, что из отрезков с длинами [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] можно построить треугольник, то решение задачи сводится к нахождению углов по следствию из «Теоремы косинусов»: [latex]\cos\alpha=\frac{b^{2}+c^{2}-a^{2}}{2bc}[/latex]. Затем, чтобы найти меру угла в радианах, достаточно просто взять [latex]\arccos(\cos\alpha)[/latex].
Аналогично вычислены меры двух других углов в радианах.
В программе использован тип данных с плавающей точкой.
Для выполнения программы и проверки тестов можно воспользоваться следующим объектом (С) или этим (Java).
Засчитано
Засчитана Java версия.