PAscal에 문제가 있습니다. 나는 소수하지만 결과를 계산하려면 : 내 코드입니다 : 내가 3 싶어하지만 난이 얻을이 배열에 대한파스칼의 배열에서 소수를 계산하십시오.
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.
... 내 문제가 어디 있는지 이해가 안 돼요. 도와주세요
주된 문제는'sum' 변수를 다시 초기화하지 않는다는 것입니다. 그래서'sum' 값이 1이되면 항상 1이됩니다.'sum : = 0;'if (sum = 0) then count : = count + 1;'. 그러나 코드에도 오류가 있습니다. 예를 들어 배열 인덱스는 1부터 시작하지만 'for i : = 0 to size do' 루프는 0부터 시작하므로 첫 번째 반복에서'arr [i]'에 오류가 발생합니다. – Abelisto
나는 파스칼 (34 세)을 한 지 오래되었지만 인덱스는 0부터 시작합니다. 그리고 둘 다 사용합니다. 그래서 문제가 무엇인지 짐작할 수 있습니다. – Vorsprung
이것은 디버거를 사용하는 법을 배울 수있는 좋은 시간입니다. Free Pascal, Pascal Script, Turbo Pascal을 동시에 사용하는 것은 거의 불가능합니다. 왜냐하면 그들이 작성한 코드와 아무데도 호환되지 않기 때문입니다. 실제로 질문에 * 적용되는 태그 만 추가하십시오. 비슷한 것으로 보이는 태그를 무작위로 추가하지 마십시오. 이 경우에는 '파스칼'과 '프리 패스'또는 '파스칼'과 '터보 - 파스칼'(그러나 전부는 아님)처럼 보일 것입니다. –