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