При изменении значений в pascal программа перестаёт работать
Есть код
program qqq;
const n=10;
var a:array[4..n] of integer;
k, i:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=random(6)+4;
write(a[i], ' ');
end;
writeln;
k:=0;
for i:=1 to n do
if a[i] mod 2 = 0 then k:=k+1;
writeln('четных: ',k,' нечетных: ', n-k);
end.
Не работает из-за 8 строки, пишет: Ошибка времени выполнения: Индекс находился вне границ массива.
А также предупреждения в виде:
Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла (в 13 и 7 строках)
НО если мы поменяем все значения на +10, то есть получиться так:
program qqq;
const n=20;
var a:array[4..n] of integer;
k, i:integer;
begin
Randomize;
for i:=10 to n do begin
a[i]:=random(6)+4;
write(a[i], ' ');
end;
writeln;
k:=0;
for i:=10 to n do
if a[i] mod 2 = 0 then k:=k+1;
writeln('четных: ',k,' нечетных: ', n-k-10);
end.
Оно будет работать!
Подскажите пожалуйста кто-нибудь почему так и как это можно исправить?
Источник: Stack Overflow на русском