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 (for soil-soilak kasu hauetan). |
![]() |
Batugaien kopurua ezaguturik batukariak kalkula ditzagun |
Hurrengo adibideetan for egitura errepikakorra landuko dugu. Adibide guztiak oinarrizkoak direnez for aginduaren barruan ez da izango beste agindu errepikakorrik, horregatik for artikulu honek jarraipena izango du beste artikulu batean —Ariketa 22 | for adibideak (2)— non for agindu habiaratuak landuko ditugun.
Gogoratu for agindu erabili ahal izateko iterazioen kopurua ezaguna izango dela. Iruzkinak:
- Iterazioen kopurua kontrolatzeko Kontagailua izeneko aldagaia diskretua izango da (int datu-mota familiakoa edo char datu-motakoa)
- Kontagailua izeneko aldagaiaren hasieraketa for aginduan bertan egiten da
- Prozesu errepikakorra eteteko Kontagailua aldagaiaren balioa aztertzen da adierazpen logiko batean (egia ala gezurra ebaluatzen den adierzpena), eta baldintzaren emaitza egia den bitartean prozesu errepikakorrak jarraituko du
- Kontagailua aldagaiaren balioa aldatuz doa iterazio batetik bestera
Batukariak eta biderkariak kalkulatzen for aginduarekin trebatzeko:
/* Ariketa-21a_forAdibideak-1: batukari baten kalkulua. */ // {------------------------------------------------------------------------------ // iMuga emanda lortu iBatukaria = 1 + 2 + 3 + ... + (iMuga-1) + iMuga // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iKont, iMuga, iBatukaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta positiboa eman (5 adibidez): "); scanf("%d", &iMuga); } while (iMuga < 0); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); printf("\n ---------------------------------------------"); for (iKont=1; iKont<=iMuga; iKont++) { iBatukaria = iBatukaria + iKont; printf("\n \t %2d iterazioan iBatukaria=%d", iKont, iBatukaria); } printf("\n ---------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = 1 + 2 + 3 + ... + (iMuga-1) + iMuga
/* Ariketa-21b_forAdibideak-1: biderkari baten kalkulua (faktorialaren kalkulua). */ // {------------------------------------------------------------------------------ // iMuga emanda lortu liBiderkaria = 1 * 2 * 3 * ... * (iMuga-1) * iMuga // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iKont, iMuga; long lBiderkaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta positiboa eman (5 adibidez): "); scanf("%d", &iMuga); } while (iMuga < 0); lBiderkaria = 1; printf("\n Hasieran lBiderkaria=%ld", lBiderkaria); printf("\n ---------------------------------------------------"); for (iKont=1; iKont<=iMuga; iKont++) { lBiderkaria = lBiderkaria*iKont; printf("\n \t %2d iterazioan lBiderkaria=%ld", iKont, lBiderkaria); } printf("\n ---------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n Azkenean: lBiderkaria=%ld", lBiderkaria); printf("\n\n"); return 0; }
lBiderkaria = 1 * 2 * 3 * ... * (iMuga-1) * (iMuga)
/* Ariketa-21c_forAdibideak-1: batukari baten kalkulua. */ // {----------------------------------------------------------------------------- // iMuga emanda lortu iBatukaria = iMuga + (iMuga-1) + ... + 3 + 2 + 1 // -----------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iIterazio, iKont, iMuga, iBatukaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta positiboa eman (5 adibidez): "); scanf("%d", &iMuga); } while (iMuga < 0); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); iIterazio = 0; printf("\n -------------------------------------------------------"); for (iKont=iMuga; iKont>=1; iKont--) { iIterazio++; iBatukaria = iBatukaria + iKont; printf("\n \t %2d. iterazioan: iKont=%d iBatukaria=%d", iIterazio, iKont, iBatukaria); } printf("\n -------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n iIterazio=%d", iIterazio); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = iMuga + (iMuga-1) + ... + 3 + 2 + 1
/* Ariketa-21d_forAdibideak-1: batukari baten kalkulua. */ // {----------------------------------------------------------------------------- // Negatiboa den iMuga emanda lortu iBatukaria = -1 -2 -3 -4 - ... -iMuga // -----------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iIterazio, iKont, iMuga, iBatukaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta negatiboa eman (-5 adibidez): "); scanf("%d", &iMuga); } while (iMuga > 0); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); iIterazio = 0; printf("\n -------------------------------------------------------"); for (iKont=-1; iKont>=iMuga; iKont--) { iIterazio++; iBatukaria = iBatukaria + iKont; printf("\n \t %2d. iterazioan: iKont=%d iBatukaria=%d", iIterazio, iKont, iBatukaria); } printf("\n -------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n iIterazio=%d", iIterazio); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = -1 -2 -3 -4 - ... -iMuga
/* Ariketa-21e_forAdibideak-1: batukari baten kalkulua. */ // {------------------------------------------------------------------------------ // Mugak emanda lortu iBatukaria = iBeheMuga + (iBeheMuga+1) + ... + iGoiMuga // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iIterazio, iKont, iBeheMuga, iGoiMuga, iBatukaria; printf("\n\n"); do { printf(" 'iBeheMuga' zenbaki osoa eta positiboa eman (5 adibidez): "); scanf("%d", &iBeheMuga); } while (iBeheMuga < 0); do { printf(" %d baino handiagoa den 'iGoiMuga' zenbakia eman (8 adibidez): ", iBeheMuga); scanf("%d", &iGoiMuga); } while (iGoiMuga <= iBeheMuga); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); iIterazio = 0; printf("\n -------------------------------------------------------"); for (iKont=iBeheMuga; iKont<=iGoiMuga; iKont++) { iIterazio++; iBatukaria = iBatukaria + iKont; printf("\n \t %2d. iterazioan: iKont=%d iBatukaria=%d", iIterazio, iKont, iBatukaria); } printf("\n -------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n iIterazio=%d", iIterazio); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = iBeheMuga + (iBeheMuga+1) + ... + iGoiMuga
/* Ariketa-21f-a_forAdibideak-1: batukari baten kalkulua. */ // {------------------------------------------------------------------------------ // iMuga emanda lortu iBatukaria = 1 + 3 + 5 + ... + (iMuga-2) + iMuga // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iKont, iMuga, iBatukaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta positiboa eman (15 adibidez): "); scanf("%d", &iMuga); } while (iMuga < 0); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); printf("\n ------------------------------------------------------------------------"); for (iKont=1; iKont<=iMuga; iKont++) { if (iKont %2 == 1) { iBatukaria = iBatukaria + iKont; printf("\n \t %2d iterazioan iBatukaria=%2d <=== %d gehitu bakoitietan", iKont, iBatukaria, iKont); } else printf("\n \t %2d iterazioan iBatukaria=%2d <--- bikoitietan ez gehitu", iKont, iBatukaria); } printf("\n ------------------------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = 1 + 3 + 5 + ... + (iMuga-2) + iMuga
/* Ariketa-21f-b_forAdibideak-1: batukari baten kalkulua. */ // {------------------------------------------------------------------------------ // iMuga emanda lortu iBatukaria = 1 + 3 + 5 + ... + (iMuga-2) + iMuga // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako int main() { int iKont, iMuga, iBatukaria; printf("\n\n"); do { printf(" 'iMuga' zenbaki osoa eta positiboa eman (15 adibidez): "); scanf("%d", &iMuga); } while (iMuga < 0); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); printf("\n ------------------------------------------------------------------------"); for (iKont=1; iKont<=iMuga; iKont=iKont+2) { iBatukaria = iBatukaria + iKont; printf("\n \t %2d iterazioan iBatukaria=%2d <=== %d gehitu", iKont, iBatukaria, iKont); } printf("\n ------------------------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = 1 + 3 + 5 + ... + (iMuga-2) + iMuga
/* Ariketa-21g_forAdibideak-1: karratuen batukari baten kalkulua. */ // {------------------------------------------------------------------------------ // iMuga emanda (1 eta 9 artekoa) batukari hau kalkulatu: // iBatukaria = +1^2 -2^2 +3^2 -4^2 +5^2 -6^2 + ... -+iMuga^2 // ------------------------------------------------------------------------------} #include <stdio.h> // printf() funtzioarako #define BEHEMUGA 1 #define GOIMUGA 9 int main() { int iKont, iMuga, iBatugaia, iBatukaria; printf("\n\n"); do { printf(" %d eta %d artekoa den 'iMuga' zenbaki osoa eman (7 adibidez): ", BEHEMUGA, GOIMUGA); scanf("%d", &iMuga); } while ((iMuga < BEHEMUGA) || (iMuga > GOIMUGA)); iBatukaria = 0; printf("\n Hasieran iBatukaria=%d", iBatukaria); printf("\n --------------------------------------------------------------------------"); for (iKont=1; iKont<=iMuga; iKont++) { if (iKont %2 == 1) { iBatugaia = iKont*iKont; iBatukaria = iBatukaria + iBatugaia; printf("\n \t %2d iterazioan iBatukaria=%3d <=== bakoitietan %3d gehitu", iKont, iBatukaria, iKont*iKont); } else { iBatugaia = (-1)*iKont*iKont; iBatukaria = iBatukaria + iBatugaia; printf("\n \t %2d iterazioan iBatukaria=%3d <=== bikoitietan %3d gehitu", iKont, iBatukaria, -iKont*iKont); } } printf("\n --------------------------------------------------------------------------"); printf("\n Irten ondoren: iKont=%d", iKont); printf("\n Azkenean: iBatukaria=%d", iBatukaria); printf("\n\n"); return 0; }
iBatukaria = +12 -22 +32 -42 +52 -62 + ... ±iMuga2
|
iruzkinik ez:
Argitaratu iruzkina