Pascal 中的函数有问题
Having problems with functions in Pascal
代码如下:
Uses crt;
Type
mang = array[1..255] of Integer;
Var
N, X, Y : Integer;
A : mang;
Procedure Nhap(Var A : mang; Var N : Integer);
Var
i : Integer;
Begin
Clrscr;
Write('So luong phan tu: ');
Readln(N);
For i := 1 to N do begin
Write('Nhap phan tu thu ', i, ': ');
Readln(A[I]);
end;
End;
Procedure Xuat(Var A: mang; Var N: Integer);
Var
i : Integer;
Begin
For i := 1 to N do write(A[i], ' ');
Writeln;
End;
Function KTMangTang(Var A : mang; Var N : Integer) : Boolean;
Var
i, j : Integer;
Var
kt : Boolean;
Begin
kt := True;
i := 0;
For i := 1 to N-1 do
for j := i+1 to N do
if A[i] > A[j] then
kt := False;
KTMangTang := kt;
End;
Function KTMangDX(Var A : mang; Var N : Integer) : Boolean;
Var
i, j : Integer;
Var
kt : Boolean;
Begin
kt := True;
i := 0;
For i := 1 to N do
for j := N-i downto 1 do
if A[i] <> A[j] then
kt := False;
KTMangDX := kt;
End;
begin
Nhap(A, N);
Xuat(A, N);
if KTMangTang then
Writeln('Mang tang')
else
Writeln('Mang khong tang');
if KTMangDX then
Writeln('Mang doi xung')
else
Writeln('Mang khong doi xung');
readln;
End.
布尔值 KTMangTang 和 KTMangDX 应该可以工作,但它们返回了这些错误:
免费的 Pascal 编译器版本 3.2.2 [2021/05/15] for i386
Florian Klaempfl 和其他人版权所有 (c) 1993-2021
目标 OS:用于 i386 的 Win32
正在编译34.pas
34.pas(53,4) 错误:为调用“KTMangTang”指定的参数数量错误
34.pas(28,10) 错误:找到声明:KTMangTang(var mang;var SmallInt):Boolean;
34.pas(55,4) 错误:为调用“KTMangDX”指定的参数数量错误
34.pas(39,10) 错误:找到声明:KTMangDX(var mang;var SmallInt):Boolean;
34.pas(58,4) 致命:编译模块时出现 4 个错误,正在停止
严重:编译中止
错误:C:\FPC.2.2\bin\i386-Win32\ppc386.exe 返回错误退出代码
我尝试不使用“kt”布尔变量,但它返回了其他错误。
P/S:我使用带有免费 Pascal 编译器(32 位)的 Visual Studio 代码。如果有人知道如何安装 64 位 Free Pascal IDE,请帮助我。
您已将 KTMangTang
和 KTMangDX
声明为采用两个参数并返回 BOOLEAN
的函数。您已经 调用了 他们 没有 参数。这是行不通的。编译中的错误专门告诉你这个。
代码如下:
Uses crt;
Type
mang = array[1..255] of Integer;
Var
N, X, Y : Integer;
A : mang;
Procedure Nhap(Var A : mang; Var N : Integer);
Var
i : Integer;
Begin
Clrscr;
Write('So luong phan tu: ');
Readln(N);
For i := 1 to N do begin
Write('Nhap phan tu thu ', i, ': ');
Readln(A[I]);
end;
End;
Procedure Xuat(Var A: mang; Var N: Integer);
Var
i : Integer;
Begin
For i := 1 to N do write(A[i], ' ');
Writeln;
End;
Function KTMangTang(Var A : mang; Var N : Integer) : Boolean;
Var
i, j : Integer;
Var
kt : Boolean;
Begin
kt := True;
i := 0;
For i := 1 to N-1 do
for j := i+1 to N do
if A[i] > A[j] then
kt := False;
KTMangTang := kt;
End;
Function KTMangDX(Var A : mang; Var N : Integer) : Boolean;
Var
i, j : Integer;
Var
kt : Boolean;
Begin
kt := True;
i := 0;
For i := 1 to N do
for j := N-i downto 1 do
if A[i] <> A[j] then
kt := False;
KTMangDX := kt;
End;
begin
Nhap(A, N);
Xuat(A, N);
if KTMangTang then
Writeln('Mang tang')
else
Writeln('Mang khong tang');
if KTMangDX then
Writeln('Mang doi xung')
else
Writeln('Mang khong doi xung');
readln;
End.
布尔值 KTMangTang 和 KTMangDX 应该可以工作,但它们返回了这些错误:
免费的 Pascal 编译器版本 3.2.2 [2021/05/15] for i386
Florian Klaempfl 和其他人版权所有 (c) 1993-2021
目标 OS:用于 i386 的 Win32
正在编译34.pas
34.pas(53,4) 错误:为调用“KTMangTang”指定的参数数量错误
34.pas(28,10) 错误:找到声明:KTMangTang(var mang;var SmallInt):Boolean;
34.pas(55,4) 错误:为调用“KTMangDX”指定的参数数量错误
34.pas(39,10) 错误:找到声明:KTMangDX(var mang;var SmallInt):Boolean;
34.pas(58,4) 致命:编译模块时出现 4 个错误,正在停止
严重:编译中止
错误:C:\FPC.2.2\bin\i386-Win32\ppc386.exe 返回错误退出代码
我尝试不使用“kt”布尔变量,但它返回了其他错误。
P/S:我使用带有免费 Pascal 编译器(32 位)的 Visual Studio 代码。如果有人知道如何安装 64 位 Free Pascal IDE,请帮助我。
您已将 KTMangTang
和 KTMangDX
声明为采用两个参数并返回 BOOLEAN
的函数。您已经 调用了 他们 没有 参数。这是行不通的。编译中的错误专门告诉你这个。