Урок 15. Задача №7. Решение.
Primary tabs
Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от от 1 до 9 -- удаляйте из массива очередной элемент с позиции очередного введенного пользователем числа, сдвигая оставшиеся элементы второго массива влево, заполняя то, что справа нулями. Распечатывайте промежуточной состояние массива, после каждого удаления.Цикл должен работать до тех пор, пока в массиве не останется ненулевых элементов или пока пользователь не введет число большее чем 9 или меньшее чем 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| // промежуточный результат// Сообщение о завершении, т.к. все элементы удалены
-- в данном случае программа завершилась, так как удалены все элементы.
Если бы пользователь ввел число 10 или -5 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.
type MyArr = array[1..5] of integer; function FillArray(other_arr: MyArr): MyArr; var i, min, max: integer; begin randomize(); min := -10; max := 10; for i := 1 to length(other_arr) do other_arr[i] := min + random(max - min + 1); result := other_arr; end; function RebuildArr(copy_arr: MyArr; b: integer): MyArr; var i, j: integer; begin i := 1; j := 1; while(i <= length(copy_arr)) do begin if(i = b) then i += 1; copy_arr[j] := copy_arr[i]; j += 1; i += 1; end; result := copy_arr; end; procedure ShowArray(arr_first: MyArr); var i: integer; begin writeln('arr = '); for i := 1 to length(arr_first) do write('|', arr_first[i], '|', ' '); writeln(); end; var a, k: integer; arr: MyArr; begin arr := FillArray(arr); ShowArray(arr); k := high(arr); while(k >= low(arr)) do begin writeln(); writeln('Enter integer from 1 until 5 : '); readln(a); if(a > 5) or (a < 1) then begin writeln('Error! You entered an invalid number! Try again.'); break; end; arr := RebuildArr(arr, a); arr[k] := 0; k -= 1; writeln(); ShowArray(arr); end; writeln(); writeln('Programe is complited. All the elements of array deleted'); readln(); // Удержание консоль end.// Завершение программы
- Log in to post comments
- 2674 reads
vedro-compota
Wed, 06/03/2020 - 20:22
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)
vedro-compota
Wed, 06/03/2020 - 20:34
Permalink
while(k >= low(arr)) do--
-- уточнить
_____________
матфак вгу и остальная классика =)
Firons
Sat, 06/06/2020 - 18:32
Permalink
Исправлено.
vedro-compota
Sat, 06/06/2020 - 20:17
Permalink
добавить оценку изначально
добавить оценку изначально нулевых k
_____________
матфак вгу и остальная классика =)
Firons
Sun, 06/07/2020 - 18:05
Permalink
Модифицировал решение.