有人可以帮我找出我的 Pascal 代码中的错误吗?

问题描述 投票:0回答:1

这是代码,我不认为Read1d过程中有错误,但是每次我执行这个程序时,它都会显示数组所有元素的值为0,我希望有人检查我的代码并告诉我错误。

Program MainProgram;
Uses Crt;

Const
  n = 100;

Type
  TypeIn = 1..n;
  Array1d = Array[TypeIn] Of Integer;

Procedure Read1d(Var Tai: TypeIn; X: Array1d);
Var
  i: TypeIn;
Begin
  Writeln('Enter the size of the array: ');
  Readln(Tai);
  For i := 1 To Tai Do
  Begin
    Write('X[', i, '] = ');
    Read(X[i]);
  End;
End;

Procedure Write1d(Var Tai: TypeIn; X: Array1d);
Var
  i: TypeIn;
Begin
  Write(' | ');
  For i := 1 To Tai Do
  Begin
    Write(X[i], ' | ');
  End;
  WriteLn;
End;

Function Nbev(Tai:TypeIn; X: Array1d ; V:Integer):Integer;
var i, cpt:Integer;
Begin
 cpt := 0;
 for i:=1 to tai do
  Begin
     if X[i]=V then cpt := cpt + 1; 
    End;
 Nbev := cpt;
End;

Function RechV(Tai: TypeIn; X: Array1d; V: Integer): Boolean;
Var
  i: TypeIn; //Result: Boolean;
Begin
  Result := False;
  For i := 1 To Tai Do
  Begin
    If X[i] = V Then
    Begin
      Result := True;
      Break;
    End;
  End;
    RechV := Result;
End;

Var
  Tai: TypeIn;

  X: Array1d;
  V: Integer;

Begin
  textcolor(green);
    textbackground(black);
    ClrScr;
  Read1d(Tai, X);
  WriteLn;
  Write1d(Tai, X);
  Writeln('What''s the element you are looking for: ');
  Readln(V);

  If RechV(Tai, X, V) Then
     Begin
    Writeln('Element found.');
    WriteLn(Nbev(Tai, X, V));
     End
  Else
    Writeln('Element not found.');
End.

我试图输入 Array1d 数组的每个元素的值,写下所有元素,然后给出允许在最多 的数组中找到给定值 V 的解决方案 100 个整数。 以下测试将让您更好地了解我的情况:

我预料到了这一点:

Enter the size of the array:
4
X[1] = 1
X[2] = 2
X[3] = 3
X[4] = 4

 | 1 | 2 | 3 | 4 |
What's the element you are looking for:
4
Element found.

我明白了:

Enter the size of the array:
4
X[1] = 1
X[2] = 2
X[3] = 3
X[4] = 4

 | 0 | 0 | 0 | 0 |
What's the element you are looking for:
4
Element not found.

我应该做什么来解决这个问题? 每一条评论或评论都非常感谢。

algorithm debugging computer-science pascal
1个回答
0
投票

“通过引用”进行论证

Procedure Read1d(Var Tai: TypeIn; **var** X: Array1d);

否则你的过程会创建数组的副本,因为它是“按值”参数,并且你填充数组的本地副本而不是全局实例

© www.soinside.com 2019 - 2024. All rights reserved.