program binomialis_egyutthato; uses Crt,Rutin; const m=34; { 34 alatt a 17 miatt, ami nagyobb a 2^31-n‚l } var n,k : integer; jel : char; { egytthat¢ kisz m¡t sa felv ltott szorz ssal ‚s oszt ssal } function szoroz_oszt(n, k : integer): longint; var b : longint; s : real; begin { s : a szorzat kezd“‚rt‚ke a val¢s 1 } s:=1.0; { ciklus, am¡g el nem fogy a nevez“ } while k>0 do begin { a k”vetkez“ t‚nyez“vel val¢ szorz s ‚s oszt s } s:=s*n/k; { a szorz¢ ‚s az oszt¢ cs”kkent‚se 1-gyel } Dec(n); Dec(k); end; { az s szorzat val¢s sz mot eg‚ssz‚ kell alak¡tani -> ez az egytthat¢ } szoroz_oszt:=Round(s); end; { az egytthat¢ kisz m¡t sa Pascal-h romsz”ggel } function haromszoggel(n, k : integer): longint; var i,j : integer; { az egytthat¢kat egy t”mmben t roljuk } b : array[0..m,0..m] of longint; begin { minden egytthat¢ legyen 1 kezdetben } for i:=0 to m do for j:=0 to m do b[i,j]:=1; { a 2. sort¢l kezdve legyen az egytthat¢ a felette l‚v“ kett“ ”sszege } for i:=2 to n do begin for j:=1 to i-1 do b[i,j]:=b[i-1,j-1]+b[i-1,j]; end; { az egytthat¢ az adott index– t”mbelem } haromszoggel:=b[n,k]; end; begin { f“program } repeat ClrScr; WriteXY(15,2,' B I N O M I L I S E G Y š T T H A T ¢ K'); { az n beolvas sa, de nem lehet negat¡v ‚s t£l nagy } repeat WriteXY(5,5,'Az n [ 0, 33 ] : '); IntRead(n); until (n=0); { a k nem lehet nagyobb az n-n‚l ‚s nem lehet negat¡v } repeat WriteXY(5,7,'A k [ 0, '); Write(n:2,' ] : '); IntRead(k); until (k>=0) and (n>=k); { az eredm‚nyek ki¡rat sa } WriteXY(10,10,'Az eredm‚ny v ltakoz¢ m–velettel : '); Write(szoroz_oszt(n,k)); WriteXY(10,12,'Az eredm‚ny a Pascal-h romsz”gb“l : '); Write(haromszoggel(n,k)); WriteXY(45,24,'ESC kil‚p‚s, b rmi m s £jra...'); jel:=ReadKey; until jel=#27; end.