2024(e)ko otsailaren 24(a), larunbata

6. astea | zenbaki konbinatorioa (funtzioa)








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.

Hona hemen 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 (bertako aldagaiak deitzen dira)
  • 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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.