Задача 11 Урок 15
Primary tabs
Заполнить массив из 9 элементов случайными числами из диапазона от нуля до N,
и затем удалите из этого массива все элементы равные M,
причем удаление необходимо производить "сдвигом"
влево оставшихся элементов на позиции элементов, совпавших с M.
Решить двумя способами:
1) Любым
2) Провести операцию сдвига за одно прочтение исходного массива
(для этого нам потребуется еще один массив, где мы будем хранить какие-то значения)
Нужны комментарии, так как не уверен, что решения оптимальные.
// Первый способ (любой)
type
myArr1 = array[1..9] of integer;
var
a: myArr1;
min, max, i, m: integer;
function sdvig(var a : myArr1; m : integer) : myArr1;
var i : integer;
begin
i := 1;
while i <= high(a) do //первый цикл для обхода
if a[i] = m then
for i := i to high(a) do //второй цикл для сдвига
a[i] := a[i+1]
else
i += 1;
result := a;
end;
begin
write('Введите правую границу диапазона чисел: ');
readln(max);
randomize();
min := 1;
for i := low(a) to high(a) do
a[i] := min + random(max - min + 1);
write('Числа массива до операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
writeln('Какое число убрать?');
readln(m);
sdvig(a, m);
write('Числа массива после операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
write('Программа завершила свою работу');
readln();readln();
end.// с двумя массивами
type
myArr1 = array[1..9] of integer;
myArr2 = array[1..9] of integer;
var
a: myArr1;
b: myArr2;
min, max, i, m: integer;
function sdvig(var a : myArr1; var b : myArr2; m : integer) : myArr2;
var i, j : integer;
begin
i := 1;
j := 1;
while i <= high(a) do
if a[i] <> m then
begin
b[j] := a[i];
j += 1;
i += 1;
end
else
i += 1;
result := b;
end;
begin
write('Введите правую границу диапазона чисел: ');
readln(max);
randomize();
min := 1;
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] := 0;
write('Числа массива до операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
writeln('Какое число убрать?');
readln(m);
sdvig(a, b, m);
write('Числа массива после операции: ');
for i := low(b) to high(b) do
write(b[i], ' ');
writeln;
write('Программа завершила свою работу');
readln();readln();
end. - Log in to post comments
- 529 reads