Var
a, b, S, c, alpha, betta, gamma, H, P: real;
x, ar, br, gr: real;{alpha, beta. gamma в радианах}
begin
write('Введите длины двух сторон треугольника и площадь: ');
readln(a, b, S);
x := 2 * S / (a * b);
if x > 1 then writeln('Такой треугольник невозможен')
else
begin
gr := ArcSin(x);
c := Sqrt(Sqr(a) + Sqr(b) - 2 * a * b * Cos(gr));
P := a + b + c;
ar := ArcSin(a * Sin(gr) / c);
br := Pi - (ar + gr);
H := b * Sin(ar);
alpha := ar * 180 / Pi;
betta := br * 180 / Pi;
gamma := 180 - (alpha + betta);
writeln('Решение треугольника');
writeln('a=', a, ', b=', b, ', c=', c:0:5);
writeln('Alpha=', alpha:0:2, ', Betta=', betta:0:2, ', Gamma=', gamma:0:2);
writeln('P=', P:0:5, ', H=', H:0:5, ', S=', S)
end
end.
Тестовое решение:
Введите длины двух сторон треугольника и площадь: 3 4 6
Решение треугольника
a=3, b=4, c=5.00000
Alpha=36.87, Betta=53.13, Gamma=90.00
P=12.00000, H=2.40000, S=6
<em>// PascalABC.NET 3.3, сборка 1590 от 03.12.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ReadlnString.ToWords; // читаем строку, образуем массив слов
var s:=(a[:2]+a[3:]).JoinIntoString; // получаем новую строку
Writeln(s) // вывод...
end.
<u>Пояснения.</u>
a - массив с индексами от 0 до n-1, где n - число слов.
Срез a[:2] возвращает последовательность элементов массива 0 и 1.
Срез a[3:] возвращает последовательность элементов массива, начиная с третьего и до конца массива. Объединение последовательностей порождает необходимый набор слов, который объединяется в строку через пробел при помощи JoinIntoString.
<u>Пример</u>
А роза упала на лапу Азора
А роза на лапу Азора
Иголка- один из важных элементов не только матричного принтера
192 =11000000
Целую часть числа переводится из десятичной СС в другую систему счисления - последовательным делением целой части числа на основание системы счисления (для двоичной СС - на 2, для 8-ичной СС - на 8, для 16-ичной - на 16 и т.д.) до получения целого остатка, меньше, чем основание СС.