Страница 1 из 1

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

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

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

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],' ');}

это не берите во внимание, это "обрезки" программы

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

Добавлено: 16 дек 2009, 17:18
Хыиуду
for i:=1 to n do
if a<>a[i+1] then kol:=kol+1
Когда i у вас достигает значения n, a[i+1] обращается к n+1 - му элементу массива, а его не существует.

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

Добавлено: 16 дек 2009, 17:24
nitrozevs
А как исправить?
"убрать этот n+1 не мешая условию"

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

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