Как перейти от процедуры к функции? - 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 матрицы случайных чисел.
- Ввод от пользователя интервалов для диапозона.
- Вывод элементов диапозона в столбцах.
- Ввод от пользователя ключа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д