
Laanvam
5 год назад
Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольный. Если таковых нет, то вычислить величину угла С. (Паскаль)С объяснением, если можно. Заранее благодарен.
ОТВЕТЫ

Ville Heikki
Oct 24, 2020
//искать угол будем по теореме косинусов
Program n1;
var x,y,z:real;
function arccos(x : real) : real; {это понадобится для теор. кос.}
begin
arccos := 2 * arctan(sqrt((1 - x) / (1 + x)));
end;
procedure ygl( a,b,c: real); {процедура для удобства}
var ga: real;
begin
ga:=arccos((sqr(a) + sqr(b) - sqr(c))/(2 * a* b)) * 180 / pi; {сама теор. кос.}
writeln('угол С= ',ga:5:2);
end;
begin
write('введите сторону а: ');
readln(x);
write('введите сторону b: ');
readln(y);
write('введите сторону c: ');
readln(z);
if(x>=y+z)or(y>=x+z)or(z>=x+y)then writeln('Это не треугольник')
else if x*x+y*y=z*z then {теорема пифагора}
writeln('Это прямоугольный треугольник')
else if (x*x+y*y>z*z)and(x*x+z*z>y*y)and(z*z+y*y>x*x)
then
begin
writeln('Это остроугольный треугольник');
ygl(x,y,z); {вызываем процедуру}
end
else
begin
writeln('Это тупоугольный треугольник');
ygl(x,y,z);
end;
end.
Program n1;
var x,y,z:real;
function arccos(x : real) : real; {это понадобится для теор. кос.}
begin
arccos := 2 * arctan(sqrt((1 - x) / (1 + x)));
end;
procedure ygl( a,b,c: real); {процедура для удобства}
var ga: real;
begin
ga:=arccos((sqr(a) + sqr(b) - sqr(c))/(2 * a* b)) * 180 / pi; {сама теор. кос.}
writeln('угол С= ',ga:5:2);
end;
begin
write('введите сторону а: ');
readln(x);
write('введите сторону b: ');
readln(y);
write('введите сторону c: ');
readln(z);
if(x>=y+z)or(y>=x+z)or(z>=x+y)then writeln('Это не треугольник')
else if x*x+y*y=z*z then {теорема пифагора}
writeln('Это прямоугольный треугольник')
else if (x*x+y*y>z*z)and(x*x+z*z>y*y)and(z*z+y*y>x*x)
then
begin
writeln('Это остроугольный треугольник');
ygl(x,y,z); {вызываем процедуру}
end
else
begin
writeln('Это тупоугольный треугольник');
ygl(x,y,z);
end;
end.
38
Смежные вопросы: