【发布时间】:2014-12-10 19:52:49
【问题描述】:
我在 PAscal 中遇到问题。我想计算素数但没有结果: 我的代码是:
Program arrayToFunction;
const
size = 5;
type
a = array [1..size] of integer;
var
aNumbers: a = (1, 7, 3, 4, 5);
iCountNumbers: integer;
function countPrimeNumbers( var arr: a) : integer;
var
i :0..size;
sum,j,count: integer;
begin
sum := 0;count:=0;
for i := 0 to size do
begin
for j := 2 to arr[i] do
begin
if(arr[i] mod j = 0) then sum:=1;
end;
if(sum=0) then count:=count+1;
end;
countPrimeNumbers := count;
end;
begin
iCountNumbers := countPrimeNumbers( aNumbers ) ;*)
writeln( 'Numbers: ', iCountNumbers);
readln;
end.
对于这个数组,我想得到 3 但我得到 2...我不明白我的问题出在哪里。请帮帮我
【问题讨论】:
-
我看到的主要问题是您没有重新初始化
sum变量,所以在sum值变为1 后,它始终为1。在if(sum=0) then count:=count+1;之后添加sum := 0;。但是您的代码中也存在一些错误。例如,您的数组索引从 1 开始,但循环for i := 0 to size do从 0 开始,因此在第一次迭代时您将在arr[i]中出现错误。 -
我已经有一段时间没有做任何帕斯卡(34 年)了,但索引要么从零开始,要么从一开始。你同时使用。所以我猜这就是问题所在
-
这是学习使用调试器的好时机。顺便说一句,您不太可能同时使用 Free Pascal、Pascal Script 和 Turbo Pascal,因为它们与您编写的代码远不兼容。只添加实际应用到您的问题的标签 - 不要只是随机添加那些看起来相似的标签。在这种情况下,这些似乎只有
pascal和freepascal或pascal和turbo-pascal(但不是全部)。
标签: pascal freepascal pascalscript turbo-pascal