Изменить процедуру на функцию - 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.
Объяснение кода листинга программы
- Создается тип данных
mas
, который представляет собой массив целых чисел размером от 1 до 100. - Определяется функция
Invert
, которая принимает в качестве параметров массивA
и byteN
. Функция изменяет порядок элементов в массивеA
так, чтобы он соответствовал порядку элементов в обратном порядке. - В функции
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
.
- После выполнения цикла
for
функцияInvert
возвращает значение 0. - Создается переменная
A
типаmas
. - Выводится сообщение
Размерность массива:
, за которым считывается размерность массиваn
с помощью функцииreadln()
. - Выводится сообщение
Исходный:
, за которым считывается значение каждой изn
переменныхi
с помощью циклаfor
и функцииwrite()
. Каждая переменнаяi
инициализируется значением-15+random(31)
, которое генерирует случайное число от -15 до 30. - Выводится сообщение
Преобразованный:
, за которым считывается значение каждой изn
переменныхi
с помощью циклаfor
и функцииwrite()
. Каждая переменнаяi
выводит значение своего элемента массиваA
с помощью функцииwrite(A[i]:4)
. - Выводится сообщение
readln()
, чтобы прочитать ввод пользователя. - Вызывается функция
Invert(A,n)
для преобразования массиваA
и возвращается результат. - Значение, возвращаемое функцией
Invert(A,n)
, присваивается переменнойx
. - Завершается программа.