Vypocet kombinancneho cisla bez pouzitia faktorialu
Delphi & Pascal (česká wiki)
Kategorija: KMP (Programy mladňakoch
Zrobil: Maros Zatko
Program: C15.PAS
Zrobil: Maros Zatko
Program: C15.PAS
Vypocet kombinancneho cisla bez pouzitia faktorialu.
{ C15.PAS Copyright (c) Maros Zatko } { mail: facebook.zajo@gmail.com } { Vypocet kombinancneho cisla bez pouzitia faktorialu. } { } { Datum:23.12.2022 http://www.trsek.com } program kombinacne_cislo; uses crt; var n,k:word; function cPas(nn,kk:word):longint; var i:word; p:longint; begin if nn-kk<kk then kk:=nn-kk; p:=1; for i:=1 to kk do begin p:=p*nn div i; dec(nn); end; cPas:=p; end; function cAsm:longint; assembler; asm MOV AX,n { pouzit Extra registre EAX,EBX,ECX,EDX } MOV BX,k { pouzit CX a DX do SI:=vysledok } SUB AX,BX { ax:=n-k } CMP AX,BX { porovnanie n-k k } JNB @1 MOV k,AX { k:=n-k } @1: MOV AX,1 { naplnenie registrov hodnotami } MOV BX,n MOV CX,1 MOV SI,k @2: MUL BX { a teraz uz samotny vypocet } JO @3 { DX:AX >= 65536 } DIV CX DEC BX INC CX CMP CX,SI JNA @2 RET @3: MOV DX,0 { po preteceni je vysledok nula } MOV AX,0 end; begin CRT.clrscr; n:=49; k:=3; { k:=6; pre sportku } writeln('pocet kombinacii (rutina v pas): ',cPas(n,k)); writeln; writeln('pocet kombinacii (rutina v asm): ',cAsm); readln; end.