Изменить процедуру на функцию - Pascal

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

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

Не могу сообразить как сделать так, чтобы программа работала так же, но процедуры не было, а была функция? Программа меняет порядок следования элементов в массиве на противоположный:
type mas=array[1..100] of integer;
var A:mas; i,n:byte;
          procedure Invert(var A:mas;N:byte);
var i,t:integer;
begin
    for i:=1 to n div 2 do
    begin
      t:=A[i];
      A[i]:=A[n-i+1];
      A[n-i+1]:=t;
    end;
          end;
Begin
    write('Размерность массива: ');readln(n);
    writeln('Исходный: ');
    for i:=1 to n do
    begin
      A[i]:=random(30)-15;
      write(A[i]:4);
    end;
    writeln;
    Invert(A,n);
    writeln('Преобразованный: ');
    for i:=1 to n do
     write(A[i]:4);
    readln;
end.

Решение задачи: «Изменить процедуру на функцию»

textual
Листинг программы
type mas=array[1..100] of integer;
function Invert(var A:mas;N:byte):byte;
var i,t:integer;
begin
for i:=1 to n div 2 do
 begin
  t:=A[i];
  A[i]:=A[n-i+1];
  A[n-i+1]:=t;
 end;
Invert:=0;
end;
var A:mas;
    i,n,x:byte;
Begin
write('Размерность массива: ');
readln(n);
writeln('Исходный: ');
for i:=1 to n do
 begin
  A[i]:=-15+random(31);
  write(A[i]:4);
 end;
writeln;
x:=Invert(A,n);
writeln('Преобразованный: ');
for i:=1 to n do
 write(A[i]:4);
readln;
end.

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

  1. Создается тип данных mas, который представляет собой массив целых чисел размером от 1 до 100.
  2. Определяется функция Invert, которая принимает в качестве параметров массив A и byte N. Функция изменяет порядок элементов в массиве A так, чтобы он соответствовал порядку элементов в обратном порядке.
  3. В функции Invert используется цикл for, который выполняется от 1 до N (включительно) и выполняет следующие действия:
    • t := A[i] присваивает значение элемента массива A переменной t.
    • A[i] := A[n-i+1] присваивает значение элемента массива A с индексом n-i+1 переменной A[i].
    • A[n-i+1] := t присваивает значение переменной t элементу массива A с индексом n-i+1.
  4. После выполнения цикла for функция Invert возвращает значение 0.
  5. Создается переменная A типа mas.
  6. Выводится сообщение Размерность массива:, за которым считывается размерность массива n с помощью функции readln().
  7. Выводится сообщение Исходный:, за которым считывается значение каждой из n переменных i с помощью цикла for и функции write(). Каждая переменная i инициализируется значением -15+random(31), которое генерирует случайное число от -15 до 30.
  8. Выводится сообщение Преобразованный:, за которым считывается значение каждой из n переменных i с помощью цикла for и функции write(). Каждая переменная i выводит значение своего элемента массива A с помощью функции write(A[i]:4).
  9. Выводится сообщение readln(), чтобы прочитать ввод пользователя.
  10. Вызывается функция Invert(A,n) для преобразования массива A и возвращается результат.
  11. Значение, возвращаемое функцией Invert(A,n), присваивается переменной x.
  12. Завершается программа.

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

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