Как перейти от процедуры к функции? - Free Pascal
Формулировка задачи:
program lab9;
type mas=array[1..10] of integer;
mtr=array[1..10] of mas;
procedure Kol(a:mas;p,q:integer);
var j:byte;
begin
for j:=1 to 10 do
if(a[j]>=p)and(a[j]<=q) then
writeln('adress=',j);
end;
var a:mtr;
i,j,p,q:integer;
begin
randomize;
writeln('Исходная матрица:');
for i:=1 to 10 do begin
for j:=1 to 10 do begin
a[j,i]:=random(100);
write(a[j,i]:4);
end;
writeln;
end;
writeln('Введите диапазон p<q:');
readln(p,q);
writeln('Кол-во эл-ов из диапазона [',p,',',q,']в столбцах:');
for j:=1 to 10 do
begin
writeln('Столбец ',j);
Kol(a[j],p,q);
end;
readln;
end.Решение задачи: «Как перейти от процедуры к функции?»
textual
Листинг программы
uses Crt;
type mas=array[1..10] of integer;
mtr=array[1..10] of mas;
function F(t,ap,aq:integer):byte;
begin
if (t>=ap) and (t<=aq)
then F:=1
else F:=0;
end;
var a:mtr;
i,j,p,q:integer;
begin
ClrScr;
randomize;
writeln('Matrix:'); writeln;
for i:=1 to 10 do begin
for j:=1 to 10 do begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
writeln;
writeln('Diapozon p<q:'); readln(p,q); writeln;
writeln('Elementov is diapozona [',p,',',q,'] v stolbcah:');
j:=1;
repeat
Write('Stolbec ',j,' : ');
for i:=1 to 10 do
if F(a[i,j],p,q)=1 then
Write('[',i,'] ');
Writeln;
Inc(j);
until j>10;
ReadKey;
end.
Объяснение кода листинга программы
- Объявлены типы данных: массив
mas(11 элементов), массивmtr(11 элементов), переменныеi,j,p,qтипаinteger, переменнаяaтипаmtr. - Задана функция
Fс тремя параметрами типаintegerи возвращаемым типомbyte. - В основной программе:
- Вывод 10x10 матрицы случайных чисел.
- Ввод от пользователя интервалов для диапозона.
- Вывод элементов диапозона в столбцах.
- Ввод от пользователя ключа.