Можно ли передать множество как параметр процедуры - Free Pascal
Формулировка задачи:
Всем доброго времени суток, нужен совет по поводу: Можно ли в free pascal передать множество как параметр процедуры? Если можно, то как, если нельзя, то все плохо
Пример программы, которая компилируется в abc.net и не компилируется в free pascal из за множеств:
type vector=array [1..1000] of byte;
procedure SimpleNum(var a:vector;num:integer;c:Set of byte);
var i,j,k,l,m,n:integer;
begin
j:=2;
while(num<>1) do begin
while (num mod j=0) do begin
if (num mod j=0) and (j in c) then begin
inc(a[j]);
num:=num div j;
end
end;
inc(j);
end;
end;
function Stepen(i:byte;p:byte):longint;
var pres:longint;
begin
pres:=1;
while p<>0 do begin
pres:=pres*i;
dec(p);
end;
Stepen:=pres;
end;
var i,j,n,k:integer;
res:longint;
mastop:vector;
maslow:vector;
Mn:=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,57,59];
begin
res:=1;
readln(n,k);
for i:=2 to n do
SimpleNum(mastop,i,Mn);
for i:=2 to n-k do
SimpleNum(maslow,i,Mn);
for i:=2 to k do
SimpleNum(maslow,i,Mn);
for i:=1 to 60 do
mastop[i]:=mastop[i]-maslow[i];
for i:=1 to 60 do
res:=res*Stepen(i,mastop[i]);
writeln(res);
end.Решение задачи: «Можно ли передать множество как параметр процедуры»
textual
Листинг программы
type TBytes=set of Byte; ... procedure SimpleNum(var a: vector; num: integer; c: TBytes); ...
Объяснение кода листинга программы
- Объявлен новый тип данных
TBytes, который является множеством (set) байтовых значений. - В процедуре
SimpleNumобъявлены три параметра:a- вектор (vector), который будет содержать числовые значения.num- целочисленное значение.c- множество (TBytes) байтовых значений.
- В процедуре происходит обработка переданных параметров, но точная логика не указана, так как не предоставлен сам код процедуры.