各位pascal编程高手,帮帮小弟。

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:16:29
任意给定平面上三个点A(X1,Y1),B(X2,Y2),C(X3,Y3),试判断这三个点能否构成三角形。能则求出它的面积。(要程序)

上机通过的程序如下:

{$apptype console}
program test;
var x1,y1,x2,y2,x3,y3,a,b,c,s:real;
begin
write('依次输入x1,y1,x2,y2,x3,y3:');
readln(x1,y1,x2,y2,x3,y3);
if y2<>y1 then a:=(x2-x1)/(y2-y1) else a:=y3-y1;{AB的斜率}
if y3<>y1 then b:=(x3-x1)/(y3-y1) else b:=y2-y1;{AC的斜率}
if (a=b)or {斜率相同}
((x1=x2)and(y1=y2))or((x1=x3)and(y1=y3))or((x3=x2)and(y3=y2)){两点重合}
then writeln('不能形成三角形。')
else begin
{两点之间的距离等于坐标差的平方之和再开方}
a:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));{AB之间的距离}
b:=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));{AC之间的距离}
c:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));{BC之间的距离}
writeln('三边长是:',a:1:5,';',b:1:5,';',c:1:5);
{又设p=(a+b+c)/2,则面积S=根号下((p-a)(p-b)(p-c)p)}
s:=(a+b+c)/2;{半周长}
s:=sqrt(s*(s-a)*(s-b)*(s-c));{面积}
writeln('三点围成三角形的面积是:',s:1:5);
end;
end.

程序在DELPHI下运行的过程如下:
D:\temp\文件>dcc32 a.dpr
Borla