2025(e)ko otsailaren 2(a), igandea

3. jarduera (I) | Errusiar Biderketaren Metodoa zertan den

ZER DAKIDAN:
Hainbat funtzio estandar ikasi dut eta for agindua ikasi dut ere.



ZER IKASIKO DUDAN:
Agindu errepikakor habiaraturkin sakondu aurretik, for agindu isolatua erabiliko dut jarduera handiago batean.

Artikulu honekin loturik, bi artikulu hauek jorratuko ditugu:


Mundu guztiak ez du biderkatzen guk hemen egiten dugun bezala. Bi zenbakiren biderkadura lortzeko darabilgun metodoan hamar zifren (0tik 9ra) biderkatzeko taulak ezagutu behar ditugu, txiki txikitatik ikasi genituen hamar taula horiek; adibidez, hauxe da 7ren biderkatzeko taula:

                        7 x 0 =  0
                        7 x 1 =  7
                        7 x 2 = 14
                        7 x 3 = 21
                        7 x 4 = 28
                        7 x 5 = 25
                        7 x 6 = 42
                        7 x 7 = 49
                        7 x 8 = 56 
                        7 x 9 = 63
Baina, errusiar biderketa bezala ezagutzen den metodoan ez da biderkatzeko taularik ezagutu behar; zenbaki baten doblea eta erdia lortzeko gai izan behar gara. Bi datuen dobleak eta erdiak eskuratu ondoren, batuketa bat burutu behar da hasierako bi zenbakiren arteko biderkadura kalkulatzeko. Bideo honek metodoa bera ederki azaltzen du eta metodoak barneratzen duen printzipio matematikoa ere: 


Jatorrizko bideoa ingelesez ekoizturik dago eta hemen ikus dezakezu


Demagun lau biderketa hauek egin nahi ditugula errusiar biderketaren metodoa aplikatuz:

    33 x 7 =          34 x 7 =          35 x 7 =          36 x 7 =   

33 x 7

Lehenengo biderkagaiaren erdiak eta bigarren biderkagaiaren dobleak kalkulatuz ondoko taula osatu. Zenbaki baten erdia eskuratzean dezimalak ez dira kontutan hartuko; esate baterako 33ren erdia 16,5 da baina taulan 16 idatziko da: 
33 7
   16       14   
    8       28   
    4       56   
    2      112   
1 224

?

Ezkerreko zutabeko bikoitiak diren errenkada osoak ezabatu:
33 7
   16       14   
    8       28   
    4       56   
    2      112   
1 224

231

Eskumako zutabean geratu diren zenbakien batuketa eginez, lortu den 7+224=231 batura hori bilatzen dugun emaitza da, hots, lortutako batura helburuko 33x7=231 biderkadura bezalakoa da.

34 x 7

Lehenengo biderkagaiaren erdiak eta bigarren biderkagaiaren dobleak kalkulatuz, eta ezkerreko zutabetik abiatuta bikoitiak diren errenkadak ezabatuz ondoko taula osatzen da, non lehenago esan den bezala 17ren erdia 8,5 izan arren taulan 8 idatziko dugun:
    34        7   
   17  
   14   
    8       28   
    4       56   
    2      112   
1 224

238

Eskumako zutabean geratu diren zenbakien batuketa eginez, lortu den 14+224=238 batura bilatzen dugun emaitza da, hots, lortutako batura helburuko 34x7=238 biderkadura bezalakoa da.

35 x 7

Lehenengo biderkagaiaren erdiak eta bigarren biderkagaiaren dobleak kalkulatuz, eta ezkerreko zutabetik abiatuta bikoitiak diren errenkadak ezabatuz ondoko taula osatzen da, non lehenago esan den bezala 17ren erdia 8,5 izan arren taulan 8 idatziko dugun:
    35  
    7   
   17  
   14   
    8       28   
    4       56   
    2      112   
1 224

238

Eskumako zutabean geratu diren zenbakien batuketa eginez, lortu den 7+14+224=245 batura bilatzen dugun emaitza da, hots, lortutako batura helburuko 35x7=245 biderkadura bezalakoa da.

36 x 7

Lehenengo biderkagaiaren erdiak eta bigarren biderkagaiaren dobleak kalkulatuz, eta ezkerreko zutabetik abiatuta bikoitiak diren errenkadak ezabatuz ondoko taula osatzen da, non lehenago esan den bezala 9ren erdia 4,5 izan arren taulan 4 idatziko dugun:
    36  
    7   
    18       14  
   9  
   28  
    4       56   
    2      112   
1 224

252

Eskumako zutabean geratu diren zenbakien batuketa eginez, lortu den 28+224=252 batura bilatzen dugun emaitza da, hots, lortutako batura helburuko 36x7=252 biderkadura bezalakoa da.







Errusiar Biderketaren Metodoa aplikatzeko programaren lehen hurbilpena jarraian doa. Hauek dira kodea eta programa horren balizko irteera bat:

/* 3a-Jarduera_ErrusiarBiderketa: for aginduaren adibidea. */

// Zenbaki osoekin lan eginez, iZenbakia teklatuz irakurri
// ziurtatuz datua 64 edo handiagoa dela (adibidez 65), eta
// irakurritako datuaren lehen 4 erdiak eta lehen 4 dobleak
// pantailan idatzi.

#include <stdio.h>   // printf() eta scanf() funtzioetarako
#include <math.h>    // log2() funtzioarako 
#define GUREMINIMOA 64
#define ITERAZIOKOPURUA 4

int main()
{
    int iZenbakia, iKont;
    int iErdia;
    long lDoblea;

    printf("\n");
    printf("\n Kopuru osoko eta positiboekin lan egingo da");
    printf("\n -------------------------------------------\n");

    printf("\n %d edo handiagoa den zenbaki osokoa eman eta konstantea den", GUREMINIMOA);
    printf("\n %d iterazioetan bere erdiak eta dobleak pantailaratuko dira.\n\n", ITERAZIOKOPURUA);
    do
    {
        printf(" Biderkagai bat adierazten duen zenbaki osokoa eman (345 adibidez): ");
        scanf("%d", &iZenbakia);
        if (iZenbakia < GUREMINIMOA)
            printf(" Datua %d edo handiago izango da! \n", GUREMINIMOA);
    } while (iZenbakia < GUREMINIMOA);

    printf("\n \t \t \tErdiak\tDobleak");
    printf("\n \t \t \t------\t-------");

    iErdia = iZenbakia;
    lDoblea = iZenbakia;
    for (iKont=1; iKont<=ITERAZIOKOPURUA; iKont++)
    {
        iErdia = iErdia / 2;
        lDoblea = lDoblea*2;
        printf("\n \t %2d. iterazioa \t %5d \t%ld", iKont, iErdia, lDoblea);
    }

    printf("\n\n Ikusi %d datuarekin, erdiaren azken balioa %d dela, baina...", iZenbakia, iErdia);
    printf("\n Zenbat iterazio behar dira %d-rekin azken erdia 1 izan dadin?", iZenbakia);
    printf("\n Erantzuna: log2(iZenbakia) iterazio, %d-rako %d iterazio.", iZenbakia, (int)log2(iZenbakia));

    printf("\n");
    printf("\n Programa honen jarraipena '3b-Jarduera_ErrusiarBiderketa.cbp' proiektuan...");

    printf("\n\n");
    return 0;
}


  • 3a-Jarduera_ErrusiarBiderketa_1.cbp | main.c       [metodoa zertan den]
  • 3a-Jarduera_ErrusiarBiderketa_2.cbp | main.c       [metodoa zertan den]
  • 3a-Jarduera_ErrusiarBiderketa_3.cbp | main.c       [metodoa zertan den]
  • 3b-Jarduera_ErrusiarBiderketa.cbp | main.c           [metodoa prestatzen]
  • 3c-Jarduera_ErrusiarBiderketa_1.cbp | main.c       [metodoa programatzen]
  • 3c-Jarduera_ErrusiarBiderketa_2.cbp | main.c       [metodoa programatzen]


 

iruzkinik ez:

Argitaratu iruzkina