Существует ли треугольник и, если да, определить его характеристики - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д