Задача 14 Урок 15
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива
целых чисел уникальными относительно друг друга, если среди есть неуникальные
элементы, то удалите их, сдвинув значения влево, заполняя оставшиеся справа ячейки нулями.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для:
|1|-3|5|-3|9|5|8|
получим:
|1|9|8|0|0|0|0|
type myArr1 = array[1..7] of integer; myArr2 = array[1..7] of boolean; var a: myArr1; b: myArr2; min, max, i : integer; function unik(var a : myArr1; var b : myArr2) : boolean; var i, j : integer; begin i := 1; result := true; while i <= high(a) do begin for j := i to high (a) do if a[i] = a[j+1] then begin result := false; b[i] := true; b[j+1] := true; end; i += 1; end; end; procedure sdvig(var a : myArr1; var b : myArr2); var i, j : integer; begin i := 7; while i >= low(a) do begin if b[i] = true then for j := i to high (a) do a[j] := a[j+1]; i -= 1; end; end; begin randomize(); min := 1; max := 15; for i:=low(a) to high(a) do a[i] := min + random(max - min + 1); for i:=low(b) to high(b) do b[i] := false; write('Числа массива a до операции: '); for i := low(a) to high(a) do write(a[i], ' '); writeln; unik(a, b); if unik(a, b) = false then begin writeln('Массив не уникален '); sdvig(a, b); write('Числа массива после операции: '); for i := low(a) to high(a) do write(a[i], ' '); writeln; end else writeln('Массив уникален '); write('Программа завершила свою работу'); readln();readln(); end.
- Log in to post comments
- 177 reads