Advertisement
Alex_Fomin

Untitled

Feb 10th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.28 KB | None | 0 0
  1. type
  2.   vertex = record// Координаты вершины
  3.     x: real;
  4.     y: real;
  5.   end;
  6.  
  7. var
  8.   a, b, c: vertex;// Координаты вершин
  9.   ab, bc, ca: real;// Длины сторон
  10.   ha, hb, hc: real;// Высоты
  11.   ma, mb, mc: real;// Медианы
  12.  
  13. // Функция определеиния длины отрезка по координатам, входные параметры - координаты
  14. function SegmentLength(a, b: vertex): real:=Sqrt(Sqr(a.y - b.y) + Sqr(a.x - b.x));
  15.  
  16. // Функция проверяющая существование треугольника с заданными сторонами
  17. function IsExiste(a, b, c: real): boolean:=((b + c - a) > 0) and ((a + c - b) > 0) and ((a + b - c) > 0);
  18.  
  19. // Формула Герона
  20. function Heron(a, b, c: real): real:=Sqrt((0.5 * (a + b + c)) * ((0.5 * (a + b + c)) - a) * ((0.5 * (a + b + c)) - b) * ((0.5 * (a + b + c)) - c));
  21.  
  22. // Функция вычисления медианы
  23. function Median(a, b, c: real): real:=Sqrt((2 * Sqr(a) + 2 * Sqr(b) - Sqr(c)) / 4);
  24.  
  25. begin
  26.   // Ввод координат вержин треугольника
  27.   Write('Введите координаты вершины A треугольника ABC: ');ReadLn(a.x, a.y);
  28.   Write('Введите координаты вершины B треугольника ABC: ');ReadLn(b.x, b.y);
  29.   Write('Введите координаты вершины C треугольника ABC: ');ReadLn(c.x, c.y);
  30.  
  31.   // Вычисляем длины сторон с помощью функции
  32.   ab := SegmentLength(a, b);
  33.   bc := SegmentLength(b, c);
  34.   ca := SegmentLength(c, a);
  35.  
  36.   // Проверяем возможность существования такого треугольника
  37.   if IsExiste(ab, bc, ca) then
  38.   begin
  39.     // Выведим длины сторон треугольника ABC
  40.     WriteLn('Стороны треугольника ABC:');
  41.     WriteLn(' -> сторона AB имеет длину: ', #9, ab:0:2);
  42.     WriteLn(' -> сторона BC имеет длину: ', #9, bc:0:2);
  43.     WriteLn(' -> сторона CA имеет длину: ', #9, ca:0:2);
  44.    
  45.     // Вычислим высоты
  46.     ha := (2 * Heron(ab, bc, ca)) / bc;
  47.     hb := (2 * Heron(ab, bc, ca)) / ca;
  48.     hc := (2 * Heron(ab, bc, ca)) / ab;
  49.     WriteLn('Высоты треугольника ABC:');
  50.     WriteLn(' -> высота опущенная из вершины A имеет длину: ', #9, ha:5:2);
  51.     WriteLn(' -> высота опущенная из вершины B имеет длину: ', #9, hb:5:2);
  52.     WriteLn(' -> высота опущенная из вершины C имеет длину: ', #9, hc:5:2);
  53.    
  54.     // Вычислим медианы
  55.     ma := Median(ab, ca, bc);
  56.     mb := Median(bc, ab, ca);
  57.     mc := Median(bc, ca, ab);
  58.     WriteLn('Медианы треугольника ABC:');
  59.     WriteLn(' -> медиана вершины A имеет длину: ', #9, ma:0:2);
  60.     WriteLn(' -> медиана вершины B имеет длину: ', #9, mb:0:2);
  61.     WriteLn(' -> медиана вершины C имеет длину: ', #9, mc:0:2);
  62.   end
  63.   else WriteLn('Треугольника с такими сторонами не существует');
  64. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement