Задача 10 Урок 15
Primary tabs
Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от 1 до 5 -- удаляйте
из массива очередной элемент с позиции очередного введенного пользователем
числа, сдвигая оставшиеся элементы массива влево, заполняя то, что справа
нулями. Распечатывайте промежуточной состояние массива, после каждого удаления.
Цикл должен работать до тех пор, пока в массиве не останется ненулевых
элементов или пока пользователь не введет число большее чем 5 или меньшее чем 1.
Например:
|1|3|7|5|4| // исходный массив
3 // ввод пользователя
|1|3|5|4|0| // промежуточный результат
3 // ввод пользователя
|1|3|4|0|0| // промежуточный результат
2 // ввод пользователя
|1|4|0|0|0| // промежуточный результат
1 // ввод пользователя
|4|0|0|0|0| // промежуточный результат
1 // ввод пользователя
|0|0|0|0|0| // промежуточный результат
// Cообщение о завершении, т.к. все элементы удалены
-- в данном случае программа завершилась, так как удалены все элементы.
Если бы пользователь ввел число 10 или -5 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.
Примечание: оформить код сдвига элемента как функцию.
type
myArr1 = array[1..5] of integer;
var
a: myArr1;
min, max, i, n, j : integer;
function sdvig(var a : myArr1; n : integer) : myArr1;
var i : integer;
begin
writeln('Убираем число ', a[n]);
for i := n to high(a) do
a[i] := a[i+1];
end;
begin
randomize();
min := 1;
max := 15;
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;
for j := 1 to 5 do
begin
writeln('Какое число убрать?');
readln(n);
if (n < 0) or (n > 5) then break;
sdvig(a, n);
write('Числа массива после операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
end;
write('Программа завершила свою работу');
readln();readln();
end. - Log in to post comments
- 590 reads