我需要这段代码的帮助。我不懂帕斯卡尔。但我必须在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”发现
答案 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撰写的这个答案