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

Ariketa 22 | for adibideak (2)

ZER DAKIDAN:
Agindu errepikakorretan do-while eta for ezagutzen ditut.



ZER IKASIKO DUDAN:
Menpekoa den for agindu errepikakor bat beste for nagusi baten barnean nola erabili ikasiko dut (beheko irudiak adierazten duen bezala for habiaratuak kasuaz ariko gara).

Hurrengo lau ariketak berdintsuak dira:


Kanpoko begiztak 5 iterazio ematen ditu eta barruko begiztak 10

Arestian ikusitako Ariketa 21 | for adibideak (1) artikulua gogora ekarriz, hurrengo adibideetan for egitura errepikakorrarekin jarraituko dugu lanean. Baina adibideen bigarren sorta honetan for aginduaren barruan beste for agindu bat aurkituko dugu, goiko irudiak erakusten duen antzera.

Bi prozesu errepikakor koordinatuak, bata nagusia eta bestea bere menpekoa. Hurrengo hiru ariketetan for bat beste for baten barnean aurkituko ditugu:

/* Ariketa-22a_forAdibideak-2: bi lauki marrazten. */

// {--------------------------------------------------------------
//      Zenbaki osoa eta positiboekin lan eginez, sarrerako
//      kopuruarean araberako lauki parea pantailaratuko da.
//  --------------------------------------------------------------}

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

#define BEHEMUGA 1
#define GOIMUGA 9

int main()
{
    int iKanpokoKont, iBarrukoKont, iZenbakia;

    printf("\n\n");
    do
    {
        printf(" %d eta %d artekoa den zenbaki osoa eman (5 adibidez): ", BEHEMUGA, GOIMUGA);
        scanf("%d", &iZenbakia);
    } while ((iZenbakia < BEHEMUGA) || (iZenbakia > GOIMUGA));

    printf("\n %dx%d laukia: ", iZenbakia, iZenbakia);
    printf("\n ----------\n");

    for (iKanpokoKont=1; iKanpokoKont<=iZenbakia; iKanpokoKont++)
    {
        for (iBarrukoKont=1; iBarrukoKont<=iZenbakia; iBarrukoKont++)
        {
            printf("%2d", iZenbakia);
        }
        printf("\n");
    }

    printf("\n %dx%d laukia: ", iZenbakia, 2*iZenbakia);
    printf("\n -----------\n");

    for (iKanpokoKont=1; iKanpokoKont<=iZenbakia; iKanpokoKont++)
    {
        for (iBarrukoKont=1; iBarrukoKont<=2*iZenbakia; iBarrukoKont++)
        {
            printf("%2d", iZenbakia);
        }
        printf("\n");
    }

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


/* Ariketa-22b_forAdibideak-2: triangelu bat marrazten. */

// {-----------------------------------------------------------------
//   Zenbaki osoa eta positiboekin lan eginez, sarrerako kopuruarean
//   araberako triangelu laukizuzen bat pantailaratuko da.
//  -----------------------------------------------------------------}

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

#define BEHEMUGA 1
#define GOIMUGA 9

int main()
{
    int iKanpokoKont, iBarrukoKont, iZenbakia;

    printf("\n\n");
    do
    {
        printf(" %d eta %d artekoa den zenbaki osoa eman (5 adibidez): ", BEHEMUGA, GOIMUGA);
        scanf("%d", &iZenbakia);
    } while ((iZenbakia < BEHEMUGA) || (iZenbakia > GOIMUGA));

    printf("\n %dx%d hirukia: ", iZenbakia, iZenbakia);
    printf("\n -----------\n");

    for (iKanpokoKont=1; iKanpokoKont<=iZenbakia; iKanpokoKont++)
    {
        for (iBarrukoKont=1; iBarrukoKont<=iKanpokoKont; iBarrukoKont++)
        {
            printf("%2d", iZenbakia);
        }
        printf("\n");
    }

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


/* Ariketa-22c_forAdibideak-2: potentziak batzen. */

// {--------------------------------------------------------------------
//   iMuga emanda >>> liBatukaria = 1^1 + 2^2 + 3^3 + ... + iMuga^iMuga
//   KONTUZ!!! long datu-motarekin iMuga=10 denean gainezkatzea dago.
//  --------------------------------------------------------------------}

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

#define BEHEMUGA 0
#define GOIMUGA 10

int main()
{
    int iMuga, iKontKanpo, iKontBarru;
    long lBatugaia, lBatukaria;

    printf("\n\n");
    printf("\n ---------------------------------------------------------");
    printf("\n  liBatukaria = 1^1 + 2^2 + 3^3 + 4^4 + ... + iMuga^iMuga");
    printf("\n ---------------------------------------------------------\n\n");

    do
    {
        printf(" Muga adierazten duen zenbaki osoa eta positiboa eman (5 adibidez): ");
        scanf("%d", &iMuga);
        if (iMuga < BEHEMUGA)
            printf("\n Muga kopuru positiboa izan behar da\n");
        if (iMuga >= GOIMUGA)
        {
            printf("\n\t Mugaren kopuru maximoa 9 da. Muga 10 bada");
            printf("\n\t long datu-motako batukariaren emaitzak");
            printf("\n\t LONG_MAX=%ld balioa gainditzen du.\n", LONG_MAX);
        }
    } while ((iMuga < BEHEMUGA) || (iMuga >= GOIMUGA));

    lBatukaria = 0;

    for (iKontKanpo=1; iKontKanpo<=iMuga; iKontKanpo++)
    {
        lBatugaia = 1;
        for (iKontBarru=1; iKontBarru<=iKontKanpo; iKontBarru++)
        {
            lBatugaia = lBatugaia*iKontKanpo;
            printf("\n\t iKontKanpo=%d \t\t iKontBarru=%d \t\t lBatugaia=%ld", iKontKanpo, iKontBarru, lBatugaia);
        }
        lBatukaria = lBatukaria + lBatugaia;
        printf("\n\t\t lBatugaia=%ld \t\t lBatukaria=%ld", lBatugaia, lBatukaria);
        printf("\n");
    }

    printf("\n\t\t Azken batukaria = %ld", lBatukaria);
    printf("\n\n");
    return 0;
}







  • Ariketa-22a_forAdibideak-2.cbp | main.c  
  • Ariketa-22b_forAdibideak-2.cbp | main.c  
  • Ariketa-22c_forAdibideak-2.cbp | main.c  
 

iruzkinik ez:

Argitaratu iruzkina