Существует ли треугольник и, если да, определить его характеристики - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Дано массив чисел. Требуется в процедуре отобрать все возможные варианты "тройняшек".
procedure t(...:real);
for i:=1 to N-2 do
for j:=i+1 to N-1 do
for k:=j+1 to N do
end;
Далее определить существует ли данный треугольник, если да, то определить его периметр, площадь и тип. Каждое действие выполнить в отдельной функции.
function max(a, b, c, max: real):real;
begin
if a >= b then
max:=a;
else
max:=b;
if c > max then
max:=c;
end;
 
function p(a, b, c: real):real;
begin
p:=a+b+c;
end;
 
function s(a, b, c, s: real):real;
begin
s:=sqrt(p(a,b,c)/2*(p(a,b,c)/2-a)*(p(a,b,c)/2-b)*(p(a,b,c)/2-c)); {находим площать через функцию, которая находит периметр}
 
function isn(a, b, c: real):boolean; {если true - треугольник существует}
begin
isn:=(a < b+c) and (b < a+c) and (c < a+b);
end;
 
function type(a, b, c, p: real):real;
begin
if a*a+b*b = c*c then writeln('Прямоугльный')
else if a*a+b*b > c*c then writeln('Остроугольный')
else writeln('Тупоугольный')
end;
Помогите дописать программу. Спасибо

Решение задачи: «Существует ли треугольник и, если да, определить его характеристики»

textual
Листинг программы
uses crt;
const n=8;
      arr:array[1..8] of integer=(5,7,9,11,13,15,17,19);
function myisn(a,b,c:integer):boolean;
begin
myisn:=(a < b+c) and (b < a+c) and (c < a+b);
end;
function myp(a,b,c:integer):integer;
begin
myp:=a+b+c;
end;
function mys(a,b,c:integer):real;
begin
mys:=sqrt(myp(a,b,c)/2*(myp(a,b,c)/2-a)*(myp(a,b,c)/2-b)*(myp(a,b,c)/2-c));
end;
function mytype(a,b,c:integer):string;
var mx,sr,mn:integer;
begin
if a>b then mx:=a else mx:=b;
if c>mx then mx:=c;
if a<b then mn:=a else mn:=b;
if c<mn then mn:=c;
sr:=a+b+c-mn-mx;
if mn*mn+sr*sr = mx*mx then  mytype:='Прямоугольный'
else if a*a+b*b > c*c then  mytype:='Остроугольный'
else  mytype:='Тупоугольный';
end;
var i,j,k,q:byte;
begin
clrscr;
writeln('Длины отезков');
for i:=1 to n do
write(arr[i]:3);
writeln;
q:=0;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if myisn(arr[i],arr[j],arr[k]) then
 begin
  q:=q+1;
  writeln('Треугольник со сторонами ',arr[i]:3,arr[j]:3,arr[k]:3,
  mytype(arr[i],arr[j],arr[k]):15,'P=',myp(arr[i],arr[j],arr[k]):3,' S=',mys(arr[i],arr[j],arr[k]):6:2);
  if q mod 20=0 then
   begin
    write('Press Enter');
    readln;
   end;
 end;
readln;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы