Необходимо составить программу с использованием рекурсии
Замечание: под инвертированием понимают перестановку первого и последнего элементов этой части, второго и предпоследнего и т.д.
Инвертировать часть массива, расположенную между самым левым минимальным в первой половине массива и самым правым максимальным во второй половине массива.
Program Program1;
Var
a:array [1..10] of integer;
i,min,max, Nmin, Nmax:integer;
//Процедура рекурсивной инвресии массива
procedure InvertMas(nac,kon:integer);
var
temp:integer;
begin
temp:=a[nac];
a[nac]:=a[kon];
a[kon]:=temp;
if nac+1
begin
randomize;
//Заполняем массив случайнами числами и выводим его на экран
writeln(Массив до инверсии:);
for i:=1 to 10 do
begin
a[i]:=random(100);
writeln(a[+inttostr(i)+]=+inttostr(a[i]));
end;
//Находим самый левый минимальный элемент в первой половине массива и номер этого элемента
Nmin:=1;
min:=a[Nmin];
for i:=1 to 5 do
if min>a[i] then
begin
min:=a[i];
Nmin:=i;
end;
//Находим самый правый максимальный элемент во второй половине массива и номер этого элемента
Nmax:=10;
max:=a[Nmax];
for i:=10 downto 6 do
if max begin
max:=a[i];
Nmax:=i;
end;
writeln;
writeln(Инвертируем часть массива с +inttostr(Nmin)+ по +inttostr(Nmax)+ элемент);
//Инвертируем часть массива с Nmin по Nmax
invertmas(Nmin,Nmax);
//Выводим массив после инверсии на экран
writeln;
writeln(Массив после инверсии:);
for i:=1 to 10 do writeln(a[+inttostr(i)+]=+inttostr(a[i]));
end.
