Задача 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
- 636 reads