Урок 15 Задача 9

Урок 15 Задача 9

Заполните массив из 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