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