2024(e)ko abenduaren 18(a), asteazkena

Ariketa 20 | for agindua: faktoriala eta potentzia kalkulatzen


ZER DAKIDAN:
Sekuentzialki multzokatzen diren aginduak ezagutzen ditut, bide desberdinak erabakitzeko baldintzazko aginduak (if eta switch) ezagutzen ditut. Datuak teklatuz modu kontrolatuan jasotzeko do-while agindu errepikakorra ere erabili izan dut.



ZER IKASIKO DUDAN:
Agindu errepikakorrekin jarraituz for ikasiko dut.

C programazioan, begizta bat erabiltzen da kode bloke bat hainbat aldiz errepikatzeko. Begizta bat osatzeko for agindua da modurik trinkoena da.


    Hona hemen 1 eta 5 zenbakiak inprimatzen dituen adibide sinple bat:
for (int iKont=1; iKont<=5; iKont++)
{
    printf("%d\n", iKont);
}
    Nola funtzionatzen duen. Begiztak hiru zati ditu:
  1. Hasieraketa: Begizta kontrolatzen duen iKont aldagaiari hasierako balioa ematen zaio.
  2. Baldintza: Begiztak jarraitzen du baldintza betetzen den bitartean.
  3. Iterazioa: Begiztaren iterazo bakoitzaren printf() funtzioa exekutatzen da eta iKont inkrementatzen da.

    Baldintzak adierazten duen egoera faltsua denean (iKont-ek 6 balioko duenean),
    amaitzen da begizta.



Ondoko adibidea aztertu non do-while aginduari esker ziurtatzen da iZbk datu positiboa den, eta, for aginduari esker lFakt faktoriala kalkulatzen den.

Hona hemen Ariketa-20a_FaktorialaKalkulatzen.cbp proiektuaren main() funtzioa gordetzen duen main.c fitxategiaren edukia:

/* Ariketa-20a_FaktorialaKalkulatzen: for aginduaren adibidea. */

// Zenbaki osoekin lan egingo dugu, iZbk teklatuaren bitartez
// irakurri eta lFakt=iZbk! faktoriala kalkulatu for bitartez.

#include <stdio.h>   // printf() funtzioarako

int main()
{
    int iZbk, iKont;
    long lFakt;

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

    printf("\n Zenbaki osoa eta positiboa eman eta dagokion");
    printf("\n faktoriala kalkulatu eta pantailaratuko da.\n\n");
    do
    {
        printf(" Zenbaki osoa eta positiboa eman (5 adibidez): ");
        scanf("%d", &iZbk);
    } while (iZbk < 0);

    lFakt = 1;

    for (iKont=1; iKont<=iZbk; iKont++)
    {
        lFakt = lFakt*iKont;
        printf("\n \t %d iterazioan lFakt= %ld", iKont, lFakt);
    }

    printf("\n\n \t \t %d! = %ld", iZbk, lFakt);

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


Ondoko adibidea aztertu non do-while aginduari esker ziurtatzen da iBerretzailea datu positiboa den, eta, for aginduari esker 2 konstantearen lBerredura potentzia kalkulatzen den. Lortutako emaitzaren zuzentasuna konprobatuko dugu pow(2, iBerretzailea) funtzioa aplikatuz.

Hauxe da potenzia edo berredura kalkulatzen duen Ariketa-20b_PotentziaKalkulatzen.cbp proiektuaren main.c fitxategiaren edukia:

/* Ariketa-20b_PotentziaKalkulatzen: for aginduaren adibidea. */

// Zenbaki osoekin lan eginez, iBerretzailea teklatuz irakurri
// eta 2^iBerretzailea potentzia kalkulatu for bitartez, emaitza
// konprobatuko dugu pow(2, iBerretzailea) funtzioa aplikatuz.
// ADI: Emaitza long bada 31 datuarekin gainezkatzea gertatzen da.

#include <stdio.h>   // printf() funtzioarako
#include <math.h>    // pow() funtzioarako
#define OINARRIA 2
#define MUGA 30

int main()
{
    int iBerretzailea, iKont;
    long lBerredura;

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

    printf("\n iBerretzailea zenbaki osoa eta positiboa eman eta dagokion");
    printf("\n 2^iBerretzailea potentzia (edo berredura) kalkulatuko da.\n\n");
    do
    {
        printf(" Berretzailea adierazten duen zenbaki osoa eta positiboa eman (5 adibidez): ");
        scanf("%d", &iBerretzailea);
        if ((iBerretzailea < 0) || (iBerretzailea > MUGA))
            printf(" Datua 0 eta %d artekoa (biak barne) \n", MUGA);
    } while ((iBerretzailea < 0) || (iBerretzailea > MUGA));

    lBerredura = 1;

    for (iKont = 1; iKont <= iBerretzailea; iKont++)
    {
        lBerredura = lBerredura*OINARRIA;
        printf("\n \t %2d iterazioan lBerredura= %ld", iKont, lBerredura);
    }

    printf("\n\n \t \t 2^%d = %ld", iBerretzailea, lBerredura);
    printf("\n \t   pow(2, %d) = %.0f", iBerretzailea, pow(2, iBerretzailea));

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






  • Ariketa-20a_FaktorialaKalkulatzen.cbp | main.c  
  • Ariketa-20b_PotentziaKalkulatzen.cbp | main.c  

 

iruzkinik ez:

Argitaratu iruzkina