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

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

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

type
    myArr = array[1..5] of integer;

procedure shift(n: integer; var a: myArr);
var
    i: integer;
begin
    for i := n to high(a) - 1 do
        a[i] := a[i + 1];
    a[high(a)] := 0;
end;

var
    arr: myArr;
    i, num: integer;
begin
    randomize();
    for i := low(arr) to high(arr) do
    begin
        arr[i] := 1 + random(100);
        write(arr[i], '|');
	end;

    writeln();

    repeat
	    writeln('enter number num: ');
        readln(num);

        if (num < low(arr)) or (num > high(arr)) then
            break;

        shift(num, arr);

        for i := low(arr) to high(arr) do
            write(arr[i], '|');
        writeln();
	until arr[low(arr)] = 0;

    readln();
end.
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)