Сформировать одномерный массив, состоящий из 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. ___ что я делаю не так?

12 Янв 2020 в 19:42
156 +1
0
Ответы
1

В данном коде есть несколько ошибок. Во-первых, вы пытаетесь обратиться к элементу массива до его заполнения. Во-вторых, необходимо корректно определить индекс максимального элемента, чтобы правильно вставить число -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 перед каждым максимальным элементом в массиве.

18 Апр 2024 в 20:36
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир