zenbaki konbinatorioa, kopuru osoa da eta hura lortzeko m eta n zenbaki osoak eta positiboak ezagutu behar dira. Jakinik ere, zenbaki negatiboen faktoriala definiturik ez dagoelako datuek baldintza hau betetzen dutela: m >= n.
Ondoko programa honek ZenbakiKonbinatorioaMonolitikoa.pas zenbaki konbinatorioa kalkulatzen du, baina aintzat hartu beharra dago programak inolako barne antolaketarik ez duelako faktorialaren kalkulua hiru aldiz egiten duela:
Aurreko programaren beste bertsio bat ondoko irudian erakusten da, ZenbakiKonbinatorioaFuntzioz.pas izeneko bertsio berri horrek programa nagusian datuak irakurri ondoren fnliFaktoriala() izeneko funtzioa hiru aldiz deia egiten dio. Funtzio horrek programa nagusiko datu bat jasotzen du eta dagokion faktoriala kalkulatu eta programa nagusiari itzultzen dio:
program ZenbakiKonbinatorioa_Funtzioz ;
function fnliFaktoriala(iZbk : integer) : longint ;
var
iKontagailua : integer ;
liMetagailua : longint ;
begin
liMetagailua := 1 ;
for iKontagailua:=1 to iZbk do
liMetagailua := liMetagailua * iKontagailua ;
fnliFaktoriala := liMetagailua ;
end ;
{ ----------PROGRAMA NAGUSIA---------- }
var
iZbkM, iZbkN, iZbkM_N, iEmaitza : integer ;
liFaktM, liFaktN, liFaktM_N : longint ;
begin
repeat
write('m zenbaki osoa eta positiboa eman: ') ;
readln(iZbkM) ;
write('n zenbaki osoa (non n <= m ): ') ;
readln(iZbkN) ;
until (iZbkN >= 0) AND (iZbkM >= iZbkN) ;
liFaktM := fnliFaktoriala(iZbkM) ;
liFaktN := fnliFaktoriala(iZbkN) ;
iZbkM_N := iZbkM - iZbkN ;
liFaktM_N := fnliFaktoriala(iZbkM_N) ;
iEmaitza := liFaktM div (liFaktN * liFaktM_N) ;
write('Zenbaki konbinatorioa ---> ', iZbkM, '! div (', iZbkN,'! * ', iZbkM-iZbkN,'!)') ;
write(' = ', iEmaitza) ;
readln ;
end.
ZenbakiKonbinatorioaFuntzioz.pas programaren azalpenak:
- fnliFaktoriala() izeneko funtzioaren sarrera bakarra integer bat izanik, bere irteera longint bat da
- fnliFaktoriala() funtzioak parametro formal bakarra du eta bere izena iZbk da
- fnliFaktoriala() funtzioak bi aldagai laguntzaile behar ditu iKontagailua eta liMetagailua
- fnliFaktoriala() funtzioari hiru aldiz deia egiten zaio programa nagusian, uneko parametroak iZbkM, iZbkN eta iZbkM_N direlarik
- fnliFaktoriala() funtzioak, funtzio guztiek bezala, dei bakoitzean emaitza bakarra itzuliko dio programa nagusiari
- fnliFaktoriala() funtzioak, funtzio guztiek bezala, emaitza kanporatzeko berari dagokion fnliFaktoriala etiketaren bitartez egiten du
iruzkinik ez:
Argitaratu iruzkina