Задача 8 Урок 15: Сдвиг массива - Обсуждение решения
Primary tabs
Заполнить массив из 9 элементов случайными числами, далее получить случайное число N из диапазона от 1 до 9 и затем "удалить" элемент с позиции N из массива, "сдвинув" значения влево и заполнив все что справа нулями.
Например:|1|3|4|5|4|7|-8|-9|Путь n=2, тогда после работы программы мы должны получить:
|1|4|5|4|7|-8|-9|0|Примечание: операции сдвига элементов массива оформите в виде подпрограммы.
type inArr = array[1..9] of Integer;
var a: array [1..9] of integer;
i, N , min, max, minN, maxN : integer;
function SS(x: inArr; N: integer): inArr;
begin
for i := low(x) to high(x) do
begin
if (i < N) then
x[i]:=x[i]
else if(i<9) then
x[i] := x[i+1]
else
x[i]:=0;
end;
writeln();
writeln('N = ',N);
result := x;
end;
begin
min := 1;
max := 100;
minN := 1;
maxN := 9;
randomize();
for i := 1 to 9 do
a[i] := random(max - min + 1) + min;
N := random(maxN - minN + 1) + minN;
for i := low(a) to high(a) do //цикл вывода на экран начального массива
write(a[i], ' ');
writeln();
a := SS(a,N); // переопределяем массив возвращеннным
for i := low(a) to high(a) do // цикл вывода нового массива
write(a[i], ' ');
writeln();
readln();
end. - Log in to post comments
- 2862 reads
vedro-compota
Sun, 08/08/2021 - 13:06
Permalink
стараемся выполнить сдвиг без
стараемся выполнить сдвиг без создания дополнительного массива
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Sun, 08/08/2021 - 23:12
Permalink
RE
Исправил вверху (был неполный тестовый вариант)
vedro-compota
Sun, 09/05/2021 - 13:25
Permalink
1)
1)
- можно просто ничего не делать в этой ситуации, а для этого лучше всего начать перебор цикла с другого значения
2)
последний элемент лучше затереть после цикла
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Mon, 09/06/2021 - 18:20
Permalink
RE
type inArr = array[1..9] of Integer; var a: array [1..9] of integer; i, N , min, max, minN, maxN : integer; function numDeleter(x: inArr; N: integer): inArr; begin for i := N to high(x) do begin if(i<9) then x[i] := x[i+1] end; x[i]:=0; writeln(); writeln('N = ',N); result := x; end; begin min := 1; max := 100; minN := 1; maxN := 9; randomize(); for i := 1 to 9 do a[i] := random(max - min + 1) + min; N := random(maxN - minN + 1) + minN; for i := low(a) to high(a) do //цикл вывода на экран начального массива write(a[i], ' '); writeln(); a := numDeleter(a,N); // переопределяем массив возвращеннным for i := low(a) to high(a) do // цикл вывода нового массива write(a[i], ' '); writeln(); readln(); end.vedro-compota
Wed, 09/08/2021 - 20:06
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)