Урок 15(Решенная задача номер 7)
Primary tabs
Урок 15 (Решенная задача номер 17)
7) Заполните массив из 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 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.
var a: array[1..5] of integer;
i, N : integer;
begin
N := 1;
randomize();
for i:= 1 to 5 do
begin
a[i] := random(10) - 1;
writeln(a[i]);
end;
while (N >= 1) and (N <= 5) and (a[1] <> 0) do
begin
writeln('vvedite cislo');
readln(N);
a[n] := a[n+1];
a[n+1] := a[n + 2];
a[n+2] := a[n + 3];
a[n+3] := a[n + 4];
a[n+4] := a[n + 5];
for i := 1 to 5 do
writeln(a[i]);
end;
end.
- Log in to post comments
- 3307 reads
vedro-compota
Thu, 10/15/2020 - 17:10
Permalink
представьте что в условии
представьте что в условии написано "5000" элементов и приведите решение этой задачи.
_____________
матфак вгу и остальная классика =)
Romakip
Thu, 10/15/2020 - 17:55
Permalink
var a: array[1..5] of integer
var a: array[1..5] of integer; i, N : integer; begin N := 1; randomize(); for i:= 1 to 5 do begin a[i] := random(10) - 1; writeln(a[i]); end; while (N >= 1) and (N <= 5) and (a[1] <> 0) do begin writeln('vvedite cislo'); readln(N); for i := N to high(a) do a[i] := a[i+1]; for i := 1 to 5 do writeln(a[i]); end; end.vedro-compota
Sun, 10/18/2020 - 20:56
Permalink
операцию сдвига нужно
операцию сдвига нужно оформить отдельной подпрограммой
_____________
матфак вгу и остальная классика =)
Romakip
Mon, 10/19/2020 - 16:18
Permalink
Модернезировано
type massivcisl = array[1..5] of integer; var a: massivcisl; i, N : integer; procedure OperSdviga(var x : massivcisl; M : integer); var c : integer; begin for c := N to high(a) do x[c] := x[c+1]; end; begin N := 1; randomize(); for i:= 1 to 5 do begin a[i] := random(10) - 1; writeln(a[i]); end; while (N >= 1) and (N <= 5) and (a[1] <> 0) do begin writeln('vvedite cislo'); readln(N); OperSdviga(a, N); for i := 1 to 5 do writeln(a[i]); end; end.