任何人都可以更正此Pascal代码

时间:2017-04-19 16:16:49

标签: pascal

我需要这段代码的帮助。我不懂帕斯卡尔。但我必须在pascal中编写代码。我试过了。但是有一些错误。任何人都可以帮助我吗?

    Program Arrayexamp(output); 

  Var 
  counter,index,input: Integer; 
  A: Array[1..15] of Integer;
   B: Array[1..15] of Integer;

begin
  For index := 1 to 15 do
  begin  
    read(input);
    A[index] := input;
    index++
  end

    For counter := 1 to 15 do
    begin
    if (counter mod 2 = 0) Then 
      B[counter] = A[counter] * 3 
    Else B[counter]=A[counter]-5; 
    end
end.

错误是:

source.pas(14,3)错误:非法表达

source.pas(16,5)错误:非法表达

source.pas(16,5)致命:语法错误,“;”预期但“FOR”发现

1 个答案:

答案 0 :(得分:3)

如果您学会正确缩进(格式化)代码,问题就很明显了。此答案基于您发布的原始代码,在您添加更多内容并删除一些代码以进行更改之前。但是,答案中的信息仍与问题相关。

你发布了什么:

Program Arrayexamp(output); Var counter,index,input: Integer; A : Array[1..15] of Integer;

begin

For index := 1 to 15 do
 begin  read(input);
A[index] := input;
    index++
end; 

begin 
For index := 1 to 15 do

If (counter mod 2 = 0) Then B[counter]=A[counter]*3 Else B[counter]=A[counter]-5; end.

格式如何正确:

Program Arrayexamp(output); 

Var 
  counter,index,input: Integer; 
  A : Array[1..15] of Integer;

begin
  For index := 1 to 15 do 
  begin  
    read(input);
    A[index] := input;
    index++
  end; 

  begin 
    For index := 1 to 15 do
      If (counter mod 2 = 0) Then 
        B[counter] = A[counter] * 3 
      Else B[counter]=A[counter]-5; 
end.

问题很明显:在下方的区块中,您有一个begin没有匹配的end;。事实上,begin完全没必要,可以删除。

第二个问题是for循环本身会增加循环变量,因此在循环内修改该计数器是违法的。删除index++;行。 (也参见下一段。)

第三个问题是Pascal不支持预增量或后增量运算符,因此index++是无效语法。请改用index := index + 1;Inc(index);

代码写得更恰当:

Program Arrayexamp(output); 

Var 
  counter,index,input: Integer; 
  A: Array[1..15] of Integer;

begin
  For index := 1 to 15 do
  begin  
    read(input);
    A[index] := input;
  end; 

  For index := 1 to 15 do
    if (counter mod 2 = 0) Then 
      B[counter] = A[counter] * 3 
    Else B[counter]=A[counter] - 5; 
end.

有关Pascal中begin..end的语法和用法的更多信息,请参阅我为Proper structure syntax for Pascal if then begin end撰写的这个答案