• Необходимо составить программу с использованием рекурсии 

    Замечание: под инвертированием понимают перестановку первого и последнего элементов этой части, второго и предпоследнего и т.д.


    Инвертировать часть массива, расположенную между самым левым минимальным в первой половине массива и самым правым максимальным во второй половине массива.

Ответы 1

  • 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<kon-1 then InvertMas(nac+1,kon-1); end; 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<a[i] then 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.

    • Автор:

      jagger
    • 7 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years