Задача Массивы 1
Задача[править]
В неупорядоченном массиве могут быть совпадающие элементы. Из каждой группы одинаковых элементов оставить только один, удалив остальные и «поджав» массив к его началу.
Решение[править]
Программа[править]
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