Сформировать одномерный массив, состоящий из n элементов (Каждый элеме нт – целое число из диапазона от 0 до 15, формируемое с помощью генератора случайных чисел, n<=20 вводится с клавиатуры). Вставить перед максимальным элементом число -5. Если таких элементов несколько, то вставить перед каждым. ____ program qw; var max, b, i, n, j : integer; a:array[1..45] of integer; begin max:=a[1]; b:=0; repeat write ('Введите размерность массива n (не больше 20): '); read(n); until n<=20; writeln; for i:=1 to n do begin a[i]:=random(15); if a[i]>max then max:=a[i]; end; for i:=1 to n do write(a[i],' '); writeln; writeln('max = ',max); for i:=(1+b) to (n+b) do begin if a[i] = max then begin a[i+1]:=a[i]; a[i]:=-5; b:=b+1; end else a[i]:=a[i+b]; end; for i:=1 to n do write(a[i],' '); end. ___ что я делаю не так?
В данном коде есть несколько ошибок. Во-первых, вы пытаетесь обратиться к элементу массива до его заполнения. Во-вторых, необходимо корректно определить индекс максимального элемента, чтобы правильно вставить число -5 перед каждым максимальным элементом.
Вот исправленный код:
program qw; var max, b, i, n, j : integer; a: array[1..20] of integer; begin max := 0; b := 0; repeat write ('Введите размерность массива n (не больше 20): '); read(n); until n <= 20; writeln; for i := 1 to n do begin a[i] := random(16); // генерация чисел от 0 до 15 if a[i] > max then max := a[i]; end; for i := 1 to n do write(a[i],' '); writeln; writeln('max = ',max); for i := 1 to n do begin if a[i] = max then begin for j := n+b downto i+1 do a[j] := a[j-1]; a[i] := -5; b := b + 1; end; end; for i := 1 to n+b do write(a[i],' '); end.
Этот код должен корректно работать и вставлять число -5 перед каждым максимальным элементом в массиве.
В данном коде есть несколько ошибок. Во-первых, вы пытаетесь обратиться к элементу массива до его заполнения. Во-вторых, необходимо корректно определить индекс максимального элемента, чтобы правильно вставить число -5 перед каждым максимальным элементом.
Вот исправленный код:
program qw;var
max, b, i, n, j : integer;
a: array[1..20] of integer;
begin
max := 0;
b := 0;
repeat
write ('Введите размерность массива n (не больше 20): ');
read(n);
until n <= 20;
writeln;
for i := 1 to n do
begin
a[i] := random(16); // генерация чисел от 0 до 15
if a[i] > max then
max := a[i];
end;
for i := 1 to n do
write(a[i],' ');
writeln;
writeln('max = ',max);
for i := 1 to n do
begin
if a[i] = max then
begin
for j := n+b downto i+1 do
a[j] := a[j-1];
a[i] := -5;
b := b + 1;
end;
end;
for i := 1 to n+b do
write(a[i],' ');
end.
Этот код должен корректно работать и вставлять число -5 перед каждым максимальным элементом в массиве.