nextupprevious

Next:2.4.5 Упражнения Up:2.4 Построение линейных программ
Previous:2.4.3 Возведение в степ


2.4.4 Площадь треугольника

Задача. Определить площадь треугольника по заданным координатам трех его вершин на плоскости.

Решение. Пусть $x_1, y_1, x_2, y_2, x_3, y_3$ -- координаты вершин. По формуле Герона площадь треугольника равна
\begin{displaymath}\sqrt {p*(p-a)*(p-b)*(p-c)},\end{displaymath}

где p$р = \frac{a+b+c}{2}$ -- полупериметр треугольника,

 

длины сторон треугольника, а

Длина$Длина(x,y,z,u) =\sqrt{(z-x)^{2} + (u-y)^{2}}$ --
длина отрезка прямой, соединяющего точки с координатами $(x,y)$ и $(z,u)$.
С использованием определяемых функций это решение запишется так:

module Герон;
    var X1,Y1,X2,Y2,X3,Y3 : real;
    procedure Длина(X,Y,Z,U : real):real;
        begin return Sqrt(Sqr(Z-X) + Sqr(U-Y)) end Длина;
    procedure A : real;
        begin return Длина(Х1,Y1,X2,Y2) end A;
    procedure B : real;
        begin return Длина(X2,Y2,X3,Y3) end B;
    procedure C : real;
        begin return Длина(X3,Y3,X1,Y1) end C;
    procedure P : real;
        begin return (A+B+C)/2 end P;
begin
        read(X1,Y1,X2,Y2,X3,Y3);
        writeln('Площадь равна', Sqrt(P$*$ (P-A)$*$ (P-B)$*$ (P-C)))
end Герон.

В этой программе ровно четыре вызова функции Длина, т.е. четыре раза по одной и той же формуле с неизменными аргументами вычисляется полупериметр треугольника. Более разумным было бы вычислить полупериметр один раз, запомнить во вспомогательной переменной и затем использовать его столько раз, сколько понадобится. Аналогичное можно сказать и о функциях A, B, C, P для вычисления длин сторон. После такого преобразования получим

module Герон1;
    var X1,Y1,X2,Y2,X3,Y3,A,B,C,P : real;
    procedure Длина (X,Y,Z,U : real):real;
        begin return Sqrt(Sqr(Z-X) + Sqr(U-Y)) end Длина;
begin
    read(X1,Y1,X2,Y2,X3,Y3);
    A := Длина (X1,Y1,X2,Y2);
    B := Длина (X2,Y2,X3,Y3);
    C := Длина (X3,Y3,X1,Y1);
    P := (A+B+C)/2;
    writeln ('Площадь равна',Sqrt(P$*$ (P-A)$*$ (P-B)$*$ (P-C)))
end  Герон1.
 

Next:2.4.5 Упражнения Up:2.4 Построение линейных программ
Previous:2.4.3 Возведение в степ


© В.Н. Касьянов, Е.В.Касьянова, 2004