Показать сообщение отдельно
  #2  
Старый 24.03.2021, 11:32
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 46
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Как вариант решения задачи

Код:
const n=100; //кол-во элементов массива
var masA:array [1..n] of real;      //исходный массив
    masB:array [1..n-1] of real;    //итоговый массив
    i:integer; //для цикла
    max:real;  //максимальное значение массива А
    posMax:integer; //позиция максимального значения
begin
max:=masA[1]; //максимуму присвоили значение первого элемента массива
posMax:=i; //первоначальная позиция максимального значения

for i:= 2 to n do //поиск максимума
  if masA[i]>max then
     begin
       max:=masA[i]; //нахождение максимального значения массива А
       posMax:=i;    //позиция максимального значения
     end;
{решение через два цикла}
for i:=1 to posMax-1 do masB[i]:=masA[i]; //копируем левую часть массива А до максимального значения в массив В
for i:=posMax+1 to n do masB[i-1]:=masA[i]; //копируем правую часть массива А после максимального значения в массив В

Writeln('Максимальное значение массива '+floattostr(max));          //выведение значения максимума на экран
Writeln('Позиция максимальное значение массива '+inttostr(posMax)); //вывод позиции максимального значения

for i := 1 to n-1 do writeln('masB['+inttostr(i)+']='+floattostr(masB[i])); //вывод на экран

end.

Решение через один цикл

Код:
for i:= 1 to n do  //Исключаем позицию максимального значения  (В одном цикле)
  begin
    if i<posMax then masB[i]:=masA[i];   //копируем левую часть массива А до максимального значения в массив В
    if i>posMax then masB[i-1]:=masA[i]; //копируем правую часть массива А после максимального значения в массив В
  end;
Ответить с цитированием