задача 11 урок 15

задача 11 урок 15

Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга, если среди есть неуникальные элементы, то удалите их, сдвинув значения влево, заполняя оставшиеся справа ячейки нулями.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для:

|1|-3|5|-3|9|5|8|
получим:
|1|9|8|0|0|0|0|

РЕШЕНИЕ

program task_11_lesson_15;
type arr = array[1..7] of integer;

function creatRandomArray(min, max: integer) : arr;  // функция создания массива(рандом)
var i: integer;
  ar: arr;
  begin
    randomize();
    for i := low(ar) to high(ar) do
      ar[i] := min + random(max - min + 1);
    result := ar;
  end;
procedure writeArray(ar : arr);   // процедура которая будет печатать наш массив
var i: integer;
begin
  for i := low(ar) to high(ar) do
    write(ar[i], ' ');
  writeln();
end;

function createZero(ar: arr) : arr;  // меняем одинаковые элементы на 0
var
  i, j, k: integer;
begin
  for i := low(ar) to (high(ar) - 1) do  // берем первый элемент и сравниваем с поледующими
    begin
     for j := (i + 1) to high(ar) do     // начинаем со второго
     if (ar[i] = ar[j]) then
       begin
         ar[j] := 0;
         k := ar[j];// k - принимает ноль - для нас это сигнал что надо будет элемент который сравнивали тоже заменить на ноль.
       end;         // но только после того найдем и заменим все такие же
    if k = 0 then
       begin
         ar[i] := 0;
         k := 1;
       end;
    end;
  result := ar;
end;

var a: array[1..7] of integer;
  i, j: integer;
begin
  a := creatRandomArray(1,15);
  writeArray(a);
  a := createZero(a);
  for j := 1 to high(a) do          // выносим каждый 0 в конец массива
    for i:= low(a) to high(a) do
      if a[i] = 0 then
        begin
          a[i] := a[i + 1];
          a[i + 1] := 0;
        end;
  writeArray(a);
  readln
end. 

КОНСОЛЬ:

4 15 4 6 8 3 3
15 6 8 0 0 0 0
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)