Дан целочисленный массив А. Удалить из массива все одинаковые элементы.В чем моя ошибка?...

0 голосов
78 просмотров

Дан целочисленный массив А. Удалить из массива все одинаковые элементы.В чем моя ошибка?
program hgfd1;
const n=5;
var a:array[1..n] of integer;
i,c:integer;
begin
randomize;
for i:=1 to n do
begin
a[i]:=random(8)+0;
writeln('a[',i,']=',a[i]);
end;
for i:=2 to n do
for c:=i-1to 1 do
if a[i]=a[c] then
a[i]:=a[i+1];
for i:=1 to n do
writeln('a[',i,']=',a[i]);
end.


Информатика (15 баллов) | 78 просмотров
0

Он удаляет только чётное количество повторений, насколько я могу судить бегло пробежавшись. Да и запись i-1 выглядит странно. Сейчас попробую переписать.

Дан 1 ответ
0 голосов
Правильный ответ

//Как-то громоздко получилось, но я так вижу. Эх, выходные.
const n=5;
var a:array[1..n] of integer;
b:array[0..8] of integer;
ar:array[1..n] of integer;
i,c,j:integer;
begin
randomize;
writeln('Array:');
for i:=1 to n do
begin
a[i]:=random(8);
write(a[i]:4);
end;
for i:=1 to n do
 begin;
  for j:=0 to 8 do
    if a[i]=j then inc(b[j]);
 end;
for i:=1 to n do
 begin;
  for j:=0 to 8 do
   if (b[j]>1) and (a[i]=j) then a[i]:=9;
 if a[i]<>9 then
  begin;
   inc(c);
   ar[c]:=a[i];
  end;
 end;
 writeln;
 for i:=0 to 8 do writeln(i,'=',b[i]);
writeln;
writeln('Final array:');
for i:=1 to n do
if a[i]=9 then a[i]:=0;

for i:=1 to c do
begin;
 a[i]:=ar[i];
 write(a[i]:4);
end;
end.

(38.6k баллов)