Param66. Используя типы TPoint, TTriangle и функции Leng и Perim (см. задания Param64 и Param65), описать функцию Area($$T$$) вещественного типа, находящую площадь треугольника $$T$$ ($$T$$ — параметр типа TTriangle) по формуле Герона: $$S_{ABC}=\sqrt{p*(p-|AB|)*(p-|AC|)*(p-|BC|)}$$, где $$p$$ — полупериметр. С помощью этой функции найти площади треугольников $$ABC$$, $$ABD$$, $$ACD$$, если даны координаты точек $$A$$, $$B$$, $$C$$, $$D$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
program Param65; type TPoint = record x,y:real; end; TTriangle = record A,B,C:TPoint; end; var A,B,C,D:TPoint; ABC,ABD,ACD:TTriangle; Function Leng(A,B:TPoint):real; begin Leng:=sqrt(sqr(A.X-B.X)+sqr(A.Y-B.Y)); end; Function Perim(T:TTriangle):real; begin Perim:=Leng(T.A,T.B)+Leng(T.B,T.C)+Leng(T.C,T.A); end; Function Area(T:TTriangle):real; begin Area:=sqrt((Perim(T)/2)*((Perim(T)/2)-Leng(T.A,T.B))*((Perim(T)/2)-Leng(T.A,T.C))*((Perim(T)/2)-Leng(T.B,T.C))); end; begin Write('A(x,y): '); Readln(A.x,A.y); Write('B(x,y): '); Readln(B.x,B.y); Write('C(x,y): '); Readln(C.x,C.y); Write('D(x,y): '); Readln(D.x,D.y); ABC.A:=A; ABC.B:=B; ABC.C:=C; ABD.A:=A; ABD.B:=B; ABD.C:=D; ACD.A:=A; ACD.B:=C; ACD.C:=D; Writeln(Area(ABC)); Writeln(Area(ABD)); Writeln(Area(ACD)); end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: