Урок 15 Задача 9
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 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.Примечание: оформить код сдвига элемента как функцию.
Решение:
program u15z09;
type myArr = array[1..5] of integer;
var i,n:integer;
a,b: myArr;
procedure writeArr(arr:myArr; mes:string);// процедура вывода массива на экран
begin
writeln(mes);
for i:=low(arr) to high(arr) do
write(arr[i],' ');
writeln();
end;
function modArr(arr:myArr; n:integer):myArr; // функция удаления n-го элемента
begin
for i:=n to high(arr) do
arr[i]:=arr[i+1];
arr[high(arr)]:=0;
result:=arr;
end;
begin
randomize;
for i:=low(a) to high(a) do
a[i]:= random(10);
writeArr(a,'perviy massiv:');
repeat
write('vvedite chislo - ');
readln(n);
b:=modArr(a,n);
a:=b;
writeArr(b,'vtoroy massiv:');
until (n<1)or(n>5)or((b[1]=0)and(b[2]=0)and(b[3]=0)and(b[4]=0)and(b[5]=0));
writeln('THE END');
readln;
end.
Консоль:
perviy massiv: 3 0 4 1 7 vvedite chislo - 4 vtoroy massiv: 3 0 4 7 0 vvedite chislo - 1 vtoroy massiv: 0 4 7 0 0 vvedite chislo - 3 vtoroy massiv: 0 4 0 0 0 vvedite chislo - 2 vtoroy massiv: 0 0 0 0 0 THE END
- Log in to post comments
- 467 reads