Инвертировать часть массива с первого элемента до самого правого минимального элемента - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, прошу помощи у вас уважаемые пользователи. По возможности дайте пожалуйста полную программу.

Инвертировать часть массива с первого элемента до самого правого минимального элемента.

Спасибо.

Решение задачи: «Инвертировать часть массива с первого элемента до самого правого минимального элемента»

textual
Листинг программы
const n=10;
type mas=array[1..n] of integer;
var a:mas;
    i,tmp:integer;
procedure vv(var x:mas;f:boolean;ch:string);
var i:integer;
begin
 writeln(ch,':');
 for i:=1 to n do
  begin
   if f then x[i]:=-5+random(11);
   write(x[i]:3)
  end;
 writeln 
end;
function mini(x:mas):integer;
var i,mm,mmi:integer;
begin
 mm:=a[1];mmi:=1;
 for i:=1 to n do 
  if a[i]<=mm 
   then
    begin
     mm:=a[i];
     mmi:=i
    end;
 mini:=mmi   
end;    
begin
 randomize;
 vv(a,true,'A');
 writeln('минимальный правый элемент ',a[mini(a)],' под номером : ',mini(a));
 if mini(a)<3 
  then writeln('инверсия не нужна')
  else
   begin
    for i:=1 to (mini(a)-1) div 2 do
     begin
      tmp:=a[i];
      a[i]:=a[mini(a)-i];
      a[mini(a)-i]:=tmp
     end;
    vv(a,false,'A''') 
   end 
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные n, mas и a. Переменная n инициализируется значением 10. Переменная mas представляет собой массив целых чисел длиной n. Переменная a ссылается на этот массив.
  2. Затем объявляются две вспомогательные переменные i и tmp. Переменная i используется для цикла, а переменная tmp используется для временного хранения значения элемента массива.
  3. Далее объявляется процедура vv, которая принимает три аргумента: var x:mas, f:boolean и ch:string. Внутри процедуры выводится символ ':' и затем выводится значение каждого элемента массива x от 1 до n. Если f равно истине, то каждый элемент массива x заменяется на -5+random(11). После вывода значений всех элементов массива выводится символ '.'.
  4. Затем объявляется функция mini, которая принимает один аргумент x:mas. Внутри функции инициализируются две вспомогательные переменные mm и mmi. Переменная mm инициализируется первым элементом массива x, а переменная mmi инициализируется индексом первого минимального элемента.
  5. Затем внутри функции mini выполняется цикл, который проходит по всем элементам массива x от 1 до n. Если текущий элемент массива x меньше или равен mm, то значения переменных mm и mmi обновляются.
  6. По завершении цикла, значение переменной mini возвращается из функции.
  7. После этого выполняется основной блок кода. Сначала выполняется функция randomize, чтобы инициализировать генератор случайных чисел. Затем вызывается процедура vv, передавая ей массив x, значение true и строку 'A'. После вывода значений элементов массива x выводится сообщение о минимальном правом элементе и его индексе.
  8. Затем выполняется проверка: если минимальный правый элемент равен или меньше 3, то выводится сообщение, что инверсия не нужна. В противном случае выполняется цикл, который проходит по всем элементам массива x от 1 до (mini(x)-1) div 2.
  9. Внутри цикла каждый элемент массива x, кроме текущего, заменяется на tmp. Затем вызывается процедура vv, передавая ей массив x, значение false и строку 'A'''. После вывода значений элементов массива x выводится сообщение о том, что инверсия выполнена.
  10. Код завершается.

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы