Помагите устранить ошибку

Ответить
nitrozevs
Сообщения: 14
Зарегистрирован: 13 дек 2009, 15:38

Вот ЗАДАЧА( условие:Дан одномерный массив цеых чисел. Найти кол-во различных элементов данного массива (отсортировать).)

Код: Выделить всё

program p7;
uses crt;
const n=5;
type aa=array[1..n] of integer;
var a:aa;
i,j,kol:integer;
x:integer;
begin
clrscr;
kol:=0;
writeln('Введите массив');
for i:=1 to n do readln(a[i]);
writeln('исходный массив);
for i:=1 to n do write(a[i],' ');
writeln;
writeln('otcoptipoBaHHbIi`  MaCCiB');
for j:=n-1 downto 1 do begin
           for i:=1 to j do
           if a[i]>a[i+1] then begin
                               x:=a[i];
                               a[i]:=a[i+1];
                               a[i+1]:=x;
                               end;
           {for i:=1 to n do
           write(a[i],' ');}
end;
for i:=1 to n do write(a[i],' ');
for i:=1 to n do
if a[i]<>a[i+1] then kol:=kol+1
else i:=i+1;
writeln('kol= ',kol);
readln;
end.
Я почти её зделал, но она выдаёт: "выход за границы диапазона изменения индекса 1..5 (a7.pas, строка 30)",а иногда строка 20
что такое?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------

Код: Выделить всё

  {for i:=1 to n do
           write(a[i],' ');}

это не берите во внимание, это "обрезки" программы
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

for i:=1 to n do
if a<>a[i+1] then kol:=kol+1
Когда i у вас достигает значения n, a[i+1] обращается к n+1 - му элементу массива, а его не существует.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
nitrozevs
Сообщения: 14
Зарегистрирован: 13 дек 2009, 15:38

А как исправить?
"убрать этот n+1 не мешая условию"
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

nitrozevs писал(а):А как исправить?
"убрать этот n+1 не мешая условию"
for i:=1 to n-1 do
Ответить