不知道以下pascal程序错在哪里了,请帮忙检查一下,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:04:31
题目是判断四边形是什么形状的?

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
type
point=record
xcoo:real;
ycoo:real;
end;
var
lenAB,lenBC,lenAD,lenAC,lenBD,lenCD:real;
point_A,point_B,point_C,point_D:point;

function sqr(m:real):real;
function sqrt(n:real):real;

function length(point1,point2:point):real; {求边长}
var
len:real;
begin
with point2 do
begin
len:=sqrt(sqr(point1.xcoo-point2.xcoo)+sqr(point1.ycoo-point2.ycoo));
write(point1.xcoo:8:2,point1.ycoo:8:2);
writeln(point1.xcoo:8:2,point2.ycoo:8:2);
length:=len;
end;
end;

begin
writeln('输入点A与点B坐标');
readln(point_A.xcoo,point_A.ycoo,point_B.xcoo,point_B.ycoo);
lenAB:=length(point_A,point_B);
writeln('输入点C的坐标');
readln(point_C.xcoo,point_C.ycoo);
lenBC:=length(point_B,point_C);
lenAC:=

你用的算法思想没错
但是实现有漏洞
1你这样写就变成function里面套function了(我指sqr和sqrt,除非你后面加forward做重载)
也就是说length是只能由sqr或者sqrt调用的
主程序是不能访问的
我认为这个编译都通不过(也许我错了)
你这样写看起来是重载实际上是混乱了(不是老鸟不要随便重载函数,很容易导致错误的,一般重载写大量高精度运算时才用)
2 也许你只是想申明这个数学函数那么其实pascal本身就可以用,不需要调用函数库
意思就是默认状态你sqr(一个整数)可以像abs啦trunc啦这样直接用,sqrt也一样
建议干脆把function sqr 和function sqrt去掉
要平方开方的时候老老实实用预定义的sqr sqrt这样就不会有错误了
希望能起效