Найдите стороны треугольника - Pascal ABC

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

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

Периметр треугольника ABC равен 15 см.Сторона ВС больше стороны АВ на 2 см, а сторона AB меньше стороны АС на 1 см. Найдите стороны треугольника. Нужна программа на ПАСКАЛЬ с рисунком

Решение задачи: «Найдите стороны треугольника»

textual
Листинг программы
  1. uses graphABC;
  2. var x0,y0,x1,y1,x2,y2,x3,y3:integer;
  3.     a,b,c,p,h,x,l,m:real;
  4. begin
  5. p:=15;
  6. //решаем
  7. //a+b+c=p
  8. //c=a-2
  9. //b=a-1
  10. //a+a-2+a-1=3a-3=p->a=(p+3)/3
  11. a:=(p+3)/3;
  12. b:=a-1;
  13. c:=a-2;
  14. //определим центр экрана
  15. x0:=windowwidth div 2;
  16. y0:=windowheight div 2;
  17. p:=p/2;{полупериметр}
  18. h:=2*sqrt(p*(p-a)*(p-b)*(p-c))/a;//длина высоты, опущенной на сторонону а
  19. if a*a+c*c<b*b then
  20.  begin
  21.   x:=sqrt(c*c-h*h);//дополнение стороны а влево
  22.   l:=a+x;//длина горизонтальной проекции треугольника
  23.  end
  24. else if a*a+b*b<c*c then
  25.  begin
  26.   x:=sqrt(b*b-h*h);{вправо}
  27.   l:=a+x;
  28.  end
  29. else
  30.  begin
  31.   x:=sqrt(b*b-h*h);//часть нижней стороны а слева от основания высоты
  32.   l:=a;
  33.  end;
  34. //определим масштаб изображения на экран
  35. m:=(y0-40)/(h/2);//по вертикали
  36. if (2*x0-60)/l<m then m:=(2*x0-60)/l;//если по горизонтаи меньше, то этот масштаб
  37. if a*a+c*c<b*b then
  38.  begin
  39.   x3:=x0+round(l*m/2);
  40.   x2:=x3-round(x*m);
  41.   x1:=x2-round(a*m);
  42.  end
  43. else if a*a+b*b<c*c then
  44.  begin
  45.   x3:=x0-round(l*m/2);
  46.   x1:=x3+round(x*m);
  47.   x2:=x1+round(a*m);
  48.  end
  49. else
  50.  begin
  51.   x1:=x0-round(l*m/2);//левая вершина
  52.   x2:=x0+round(l*m/2);//правая вешина
  53.   x3:=x1+round(x*m);//верхняя вершина
  54.  end;
  55. y1:=y0+round(h*m/2);
  56. y2:=y1;
  57. y3:=y0-round(h*m/2);
  58. setpencolor(clRed);//рисуем треугольник красным
  59. line(x1,y1,x2,y2);
  60. line(x2,y2,x3,y3);
  61. line(x1,y1,x3,y3);
  62. textout(x3-5,y3-15,'A');
  63. textout(x1-10,y1,'C');
  64. textout(x2+10,y2,'B');
  65. textout((x1+x2)div 2,y1+10,'a='+floattostr(a));
  66. textout((x1+x3)div 2-30,(y1+y3) div 2-10,'b='+floattostr(b));
  67. textout((x3+x2)div 2+10,(y3+y2) div 2-10,'c='+floattostr(c));
  68. end.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека graphABC.
  2. Объявляются переменные: x0, y0, x1, y1, x2, y2, x3, y3: integer; a, b, c, p, h, x, l, m: real;
  3. Переменная p инициализируется значением 15.
  4. Далее решаем уравнение a + b + c = p.
  5. Переменные a, b и c инициализируются значениями, полученными из решения уравнения.
  6. Вычисляем значение переменной p, используя a.
  7. Если a a + c c < b * b, то вычисляем значения x, l и m.
  8. Если a a + b b < c * c, то вычисляем значения x, l и m.
  9. Если a a + b b < c * c, то вычисляем значения x, l и m.
  10. Вычисляем значения x1, x2 и x3.
  11. Вычисляем значения y1, y2 и y3.
  12. Рисуем треугольник, используя функции line и textout.
  13. Выводим текст с помощью функции textout.
  14. Завершаем программу.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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