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

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

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

Дано массив чисел. Требуется в процедуре отобрать все возможные варианты "тройняшек".
Листинг программы
  1. procedure t(...:real);
  2. for i:=1 to N-2 do
  3. for j:=i+1 to N-1 do
  4. for k:=j+1 to N do
  5. end;
Далее определить существует ли данный треугольник, если да, то определить его периметр, площадь и тип. Каждое действие выполнить в отдельной функции.
Листинг программы
  1. function max(a, b, c, max: real):real;
  2. begin
  3. if a >= b then
  4. max:=a;
  5. else
  6. max:=b;
  7. if c > max then
  8. max:=c;
  9. end;
  10. function p(a, b, c: real):real;
  11. begin
  12. p:=a+b+c;
  13. end;
  14. function s(a, b, c, s: real):real;
  15. begin
  16. 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)); {находим площать через функцию, которая находит периметр}
  17. function isn(a, b, c: real):boolean; {если true - треугольник существует}
  18. begin
  19. isn:=(a < b+c) and (b < a+c) and (c < a+b);
  20. end;
  21. function type(a, b, c, p: real):real;
  22. begin
  23. if a*a+b*b = c*c then writeln('Прямоугльный')
  24. else if a*a+b*b > c*c then writeln('Остроугольный')
  25. else writeln('Тупоугольный')
  26. end;
Помогите дописать программу. Спасибо

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

textual
Листинг программы
  1. uses crt;
  2. const n=8;
  3.       arr:array[1..8] of integer=(5,7,9,11,13,15,17,19);
  4. function myisn(a,b,c:integer):boolean;
  5. begin
  6. myisn:=(a < b+c) and (b < a+c) and (c < a+b);
  7. end;
  8. function myp(a,b,c:integer):integer;
  9. begin
  10. myp:=a+b+c;
  11. end;
  12. function mys(a,b,c:integer):real;
  13. begin
  14. 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));
  15. end;
  16. function mytype(a,b,c:integer):string;
  17. var mx,sr,mn:integer;
  18. begin
  19. if a>b then mx:=a else mx:=b;
  20. if c>mx then mx:=c;
  21. if a<b then mn:=a else mn:=b;
  22. if c<mn then mn:=c;
  23. sr:=a+b+c-mn-mx;
  24. if mn*mn+sr*sr = mx*mx then  mytype:='Прямоугольный'
  25. else if a*a+b*b > c*c then  mytype:='Остроугольный'
  26. else  mytype:='Тупоугольный';
  27. end;
  28. var i,j,k,q:byte;
  29. begin
  30. clrscr;
  31. writeln('Длины отезков');
  32. for i:=1 to n do
  33. write(arr[i]:3);
  34. writeln;
  35. q:=0;
  36. for i:=1 to n-2 do
  37. for j:=i+1 to n-1 do
  38. for k:=j+1 to n do
  39. if myisn(arr[i],arr[j],arr[k]) then
  40.  begin
  41.   q:=q+1;
  42.   writeln('Треугольник со сторонами ',arr[i]:3,arr[j]:3,arr[k]:3,
  43.   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);
  44.   if q mod 20=0 then
  45.    begin
  46.     write('Press Enter');
  47.     readln;
  48.    end;
  49.  end;
  50. readln;
  51. end.

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы