задача 11 урок 15
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга, если среди есть неуникальные элементы, то удалите их, сдвинув значения влево, заполняя оставшиеся справа ячейки нулями.
Протестируйте работу функции на массиве из 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
- Log in to post comments
- 742 reads
vedro-compota
Sun, 10/24/2021 - 12:07
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)