задача 9 урок 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 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.
РЕШЕНИЕ:
program task_9_lesson_15; type arr = array[1..5] of integer; function sdvig(n : integer; ar : arr) : arr; // функция сдвига var i: integer; begin for i := n to high(ar) do begin if (i < high(ar)) then ar[i] := ar[i + 1] else ar[i] := 0; end; result := ar; end; procedure writeArray(ar : arr); // процедура которая будет печатать наш массив var i: integer; begin for i := low(ar) to high(ar) do write(ar[i], ' '); writeln(); end; procedure su(ar1, ar2: arr; var n: boolean); // процедура сравнения массивов var i: integer; begin n := true; for i := 1 to high(ar1) do if ar1[i] <> ar2[i] then n := false; end; var a, b: array[1..5] of integer; i, n: integer; comp: boolean; begin randomize(); comp:= true; // изначально массивы равны for i := low(b) to high(b) do b[i] := 0; for i := low(a) to high(a) do a[i] := -10 + random(20); writeArray(a); su(a, b, comp); // первое сравнение while comp = false do // пока массив #1 не равен массиву #2 из 0-ей делаем сдвиг begin write('Which element do you want to delete? : '); readln(n); if ((n >= 1) and (n <= 5)) then begin a := sdvig(n, a); writeArray(a); su(a, b, comp); end else break; end; writeln('VSE ELEMENTI UDALENI'); readln() end.
КОНСОЛЬ:
8 -5 6 -7 2 Which element do you want to delete? : 5 8 -5 6 -7 0 Which element do you want to delete? : 2 8 6 -7 0 0 Which element do you want to delete? : 1 6 -7 0 0 0 Which element do you want to delete? : 2 6 0 0 0 0 Which element do you want to delete? : 1 0 0 0 0 0 VSE ELEMENTI UDALENI
- Log in to post comments
- 818 reads