Задача Массивы 1

Материал из PlusPi

Задача[править]

В неупорядоченном массиве могут быть совпадающие элементы. Из каждой группы одинаковых элементов оставить только один, удалив остальные и «поджав» массив к его началу.

Решение[править]

Программа[править]

uses crt;
type MyArray = array [1..100] of integer;
var n:integer;
    a:MyArray;

procedure InPut(var a:MyArray; n:integer);  {Вводим массив}
var i:integer;
begin
  for i:=1 to n do
  begin
    write('a[',i,']=');
    readln(a[i]);
  end;
end;

procedure OutPut(var a:MyArray; n:integer);   {Выводим массив}
var i:integer;
begin
  for i:=1 to n-1 do write(a[i],' ');
  writeln(a[n]);
end;

procedure Del_ident(var a:MyArray;var n:integer);
var i,j,k:integer;
begin
 i:=1;
 while (i<n) do
 begin
   j:=i;
   k:=0;
   while (j<n) do
   begin
     Inc(j);
     if a[i]=a[j+k] then
      begin
       Inc(k);
       Dec(j);
      end
     else a[j]:=a[j+k];
   end;
   n:=n-k;
   Inc(i);
 end;
end;

begin
  clrscr;
  write('Введите количество элементов массива n:');
  readln(n);
  InPut(a,n);
  writeln('== Исходный массив ==');
  OutPut(a,n);
  writeln('== После удаления одинаковых ==');
  Del_ident(a,n);
  OutPut(a,n);
  readln;
end.

Примеры работы[править]

Пример №1

Введите количество элементов массива n:5
a[1]=1
a[2]=2
a[3]=1
a[4]=4
a[5]=3
== Исходный массив ==
1 2 1 4 3
== После удаления одинаковых ==
1 2 4 3

Пример №2

Введите количество элементов массива n:10
a[1]=1
a[2]=2
a[3]=5
a[4]=2
a[5]=7
a[6]=1
a[7]=5
a[8]=4
a[9]=8
a[10]=2
== Исходный массив ==
1 2 5 2 7 1 5 4 8 2
== После удаления одинаковых ==
1 2 5 7 4 8