Function S(a,b,c:real):real;
Var
p:real;
Begin
p:=(a+b+c)/2;
result:=Sqrt(p*(p-a)*(p-b)*(p-c))
End;
Var
a,b,c,k,v,t,o,g,e,q,r,w:real;
Begin
writeln(' найти радиус или площадь треугольника? если радиус,то нажмите 1. Если площадь, то нажмите 2 ');
//если радиус,то нажмите 1. Если площадь, то нажмите 2
readln(g);
if g=2 then
begin
writeln('окружность вписанная(нажмите 1) или описанная(нажмите 2)?');
readln(e);
if e=1 then
begin
write('сторона а=');
readln(a);
write('сторона b =');
readln(b);
write('сторона с =');
readln(c);
q:=S(a,b,c);
r:=(a+b+c)/2*q;
writeln('радиус вписанной окружности =' , r );
end
else
if e=2 then
begin
write('сторона а=');
readln(a);
write('сторона b =');
readln(b);
write('сторона c =');
readln(c);
q:=S(a,b,c);
w:=a*b*c/4*q;
writeln('радиус описанной окружности =', w );
end
else
if g=1 then
begin
writeln('что вам известно? если а и h, то нажмите 1. если а , b,с то нажмите 2 ' );
//а-сторона; h-высота,проведенная на сторону; b-cторона; с -сторона;
readln(k);
if k=1 then
begin
write('высота =');
readln(v);
write('cторона=');
readln(t);
o:=1/2*v*t;
writeln('площадь=',o) ;
end
else
if k=2 then
begin
Write('a = ');
ReadLn(a);
Write('b = ');
ReadLn(b);
Write('c = ');
ReadLn(c);
if (a else WriteLn('Треугольник не существует');
end;
end;
end;
end.
что здесь неправильно ? почему он может найти радиус . но на площади треугольника останавливается? если можно то прошу сразу исправить буду благодарен
Answers & Comments
Verified answer
Function Sq(a,b,c:real):real;Var p:real;
Begin
p:=(a+b+c)/2;
result:=Sqrt(p*(p-a)*(p-b)*(p-c))
End;
Function Tr(a,b,c:real):boolean;
Begin
result:=(a+b>c)and(a+c>b)and(b+c>a)
End;
Var
a,b,c,k1,k2,h,t,s,r1,r2:real;
Begin
writeln(' найти радиус или площадь треугольника? если радиус,то нажмите 1. Если площадь, то нажмите 2 ');
readln(k1);
if k1=1 then
begin
writeln('окружность вписанная(нажмите 1) или описанная(нажмите 2)?');
readln(k2);
write('сторона а = ');
readln(a);
write('сторона b = ');
readln(b);
write('сторона с = ');
readln(c);
if Tr(a,b,c) then
begin
s:=Sq(a,b,c);
if k2=1 then
begin
r1:=(a+b+c)/(2*s);
writeln('радиус вписанной окружности = ' , r1);
end;
if k2=2 then
begin
r2:=a*b*c/(4*s);
writeln('радиус описанной окружности = ', r2);
end;
end else WriteLn('Треугольник не существует');
end
else
if k1=2 then
begin
writeln('что вам известно? если а и h, то нажмите 1. если а,b,с то нажмите 2' );
readln(k2);
if k2=1 then
begin
write('высота = ');
readln(h);
write('cторона = ');
readln(t);
s:=1/2*h*t;
writeln('площадь = ',s);
end;
if k2=2 then
begin
Write('a = ');
ReadLn(a);
Write('b = ');
ReadLn(b);
Write('c = ');
ReadLn(c);
if Tr(a,b,c) then
begin
s:=Sq(a,b,c);
writeln('площадь = ',s) ;
end else WriteLn('Треугольник не существует');
end;
end;
end.
Пример:
найти радиус или площадь треугольника? если радиус,то нажмите 1. Если площадь, то нажмите 2
2
что вам известно? если а и h, то нажмите 1. если а,b,с то нажмите 2
1
высота = 3
cторона = 4
площадь = 6