program num2set; Uses SysUtils; procedure Read_Parameters(var uit : integer); { Calling sequence interpretation of: [program] [string] } var tel,k,L : integer; bekijk : string; OK : boolean; begin tel := ParamCount; if not (tel = 1) then begin Writeln; writeln('Syntax: [NUM2SET] [number]'); Halt; end; bekijk := ParamStr(1); L := Length(bekijk); OK := true; for k := 1 to L do begin if not (bekijk[k] in ['0'..'9']) then OK := false; end; if not OK then begin Writeln; writeln('"',bekijk,'" is not a proper number'); Halt; end; uit := StrToInt(bekijk); end; function Elementen(G : integer) : string; { Make Sets corresponding to Natural (G) } var H,k : integer; S : string; begin Elementen := ''; if G = 0 then Exit; for k := 0 to 30 do begin H := G shr k; if (H and 1) = 1 then begin S := S + '{'; { Recursively: } S := S + Elementen(k); S := S + '}'; end; end; Elementen := S; end; procedure doen; var G : integer; begin Read_Parameters(G); Writeln('{' + Elementen(G) + '}'); end; begin doen; end.