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