ZER DAKIDAN: Zenbakiak, karaktereak eta kateak lantzeko gai naiz. Halaber, array bat erabiltzeko gai naiz. ZER IKASIKO DUDAN: Array datu-motako zerrenda batean ondoko bi algoritmoak ikasiko ditut:
|
ESKATZEN DEN PROGRAMA (I)
Abiadurak adierazten dituzten zenbaki errealekin lan eginez, 1 eta 10 arteko errealen zerrenda bat lortu nahi da. Zerrendaren elementuak abiadurak dira eta balio errepikatuak onartzen dira.
Programa honek lehenik zenbat abiadura gordeko dituen erabakitzen du, eta gero abiaduren zerrenda osatzen du. Bildutako abiaduren balioak pantailaratu ondoren, rAbiaduraBerria elementu berri bat eta iNon posizio bat eskatuko ditu programak, bi datu horiekin burutzen da elementu berriaren tartekaketa zerrendan (aurreko guztia baldin eta lekurik badago zerrendan). Bukatzean, zerrenda berria pantailaratuko du progranak.
Hauxe da ariketaren programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | { 19. ariketa: hainbat abiaduren zerrenda osatu ondoko baldintzekin: } { - Abiaduren kopurua zerrendan 1 eta 10 artekoa izango da } { - Abiaduren balioak 30.0 Km eta 179.9 Km artekoak izango dira } { Abiaduren zerrenda lortu eta elementu berri bat txertatu zerrendan. } program Ariketa_19_I ; const BEHEMUGA = 1 ; GOIMUGA = 10 ; type tarAbiadurenSorta = array [BEHEMUGA .. GOIMUGA] of real ; procedure AbiadurenarrayaBete( var arAbiadurak: tarAbiadurenSorta; var iLuzera: integer ) ; var iIndizea: integer ; begin Randomize ; iLuzera := Random(GOIMUGA) + 1 ; writeln ( ' Abiaduren zerrendan ' , iLuzera, ' datu gordetzen...' ) ; writeln ( ' Aurrera egiteko RETURN sakatu!' ) ; readln ; for iIndizea:=BEHEMUGA to iLuzera do begin arAbiadurak[iIndizea] := 30 + 150 *Random ; { 30.0 eta 179.9 arteko balioak } end ; end ; procedure AbiadurenarrayaIkusi( const arAbiadurak: tarAbiadurenSorta; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ; writeln ( ' Abiaduren zerrendaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 22 , '. abiadura = ' , arAbiadurak[iIndizea]: 0 : 3 ) ; end ; writeln ; end ; procedure Tartekaketa( var arAbiadurak: tarAbiadurenSorta; var iLuzera: integer ; rElementua: real ; iNon: integer ) ; var iIndizea: integer ; begin for iIndizea:=iLuzera doWNto iNon do begin arAbiadurak[iIndizea+ 1 ] := arAbiadurak[iIndizea] ; end ; arAbiadurak[iNon] := rElementua ; iLuzera := iLuzera + 1 ; end ; { ---------------------- PROGRAMA NAGUSIA ---------------------- } var arAbiadurak: tarAbiadurenSorta ; iLuzera, iNon: integer ; rAbiaduraBerria: real ; begin writeln ; writeln ; writeln ; AbiadurenarrayaBete(arAbiadurak, iLuzera) ; AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ; if iLuzera < GOIMUGA then begin write ( ' Eman abiadura berriaren balioa (30.0 eta 179.9 artekoa) ' ) ; readln(rAbiaduraBerria) ; repeat write ( ' Eman abiadura berriaren posizioa zerrendan: ' ) ; readln(iNon) ; until (iNon >= BEHEMUGA) and (iNon <= iLuzera) ; Tartekaketa(arAbiadurak, iLuzera, rAbiaduraBerria, iNon) ; AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ; end else writeln ( ' Zerrenda beterik dago, ezin da elementu berria txertatu.' ) ; readln ; end . |
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
ESKATZEN DEN PROGRAMA (II)
Abiadurak adierazten dituzten zenbaki errealekin lan eginez, 1 eta 10 arteko errealen zerrenda bat lortu nahi da. Zerrendaren elementuak abiadurak dira eta balio errepikatuak onartzen dira.
Programa honek (aurrekoak bezala) lehenik zenbat abiadura gordeko dituen erabakitzen du, eta gero abiaduren zerrenda osatzen du. Bildutako abiaduren balioak pantailaratu ondoren, zerrendatik kenduko den elementuaren iNon posizioa eskatuko du programak, datu horrekin burutzen da elementuaren ezabaketa zerrendatik. Bukatzean, zerrenda berria pantailaratuko du progranak eta ezabatutako abiadura erakutsiko du ere.
Hauxe da ariketaren programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | { 19. ariketa: hainbat abiaduren zerrenda osatu ondoko baldintzekin: } { - Abiaduren kopurua zerrendan 1 eta 10 artekoa izango da } { - Abiaduren balioak 30.0 Km eta 179.9 Km artekoak izango dira } { Abiaduren zerrenda lortu eta elementu jakin bat zerrendatik kendu. } program Ariketa_19_II ; const BEHEMUGA = 1 ; GOIMUGA = 10 ; type tarAbiadurenSorta = array [BEHEMUGA .. GOIMUGA] of real ; procedure AbiadurenarrayaBete( var arAbiadurak: tarAbiadurenSorta; var iLuzera: integer ) ; var iIndizea: integer ; begin Randomize ; iLuzera := Random(GOIMUGA) + 1 ; writeln ( ' Abiaduren zerrendan ' , iLuzera, ' datu gordetzen...' ) ; writeln ( ' Aurrera egiteko RETURN sakatu!' ) ; readln ; for iIndizea:=BEHEMUGA to iLuzera do begin arAbiadurak[iIndizea] := 30 + 1530 *Random ; { 30.0 eta 179.9 arteko balioak } end ; end ; procedure AbiadurenarrayaIkusi( const arAbiadurak: tarAbiadurenSorta; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ; writeln ( ' Abiaduren zerrendaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 22 , '. abiadura = ' , arAbiadurak[iIndizea]: 0 : 3 ) ; end ; writeln ; end ; procedure Ezabaketa( var arAbiadurak: tarAbiadurenSorta; var iLuzera: integer ; iNon: integer ) ; var iIndizea: integer ; begin for iIndizea:=iNon to iLuzera- 1 do begin arAbiadurak[iIndizea] := arAbiadurak[iIndizea+ 1 ] ; end ; iLuzera := iLuzera - 1 ; end ; { ---------------------- PROGRAMA NAGUSIA ---------------------- } var arAbiadurak: tarAbiadurenSorta ; iLuzera, iNon: integer ; rElemKopia: real ; begin writeln ; writeln ; writeln ; AbiadurenarrayaBete(arAbiadurak, iLuzera) ; AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ; repeat write ( ' Ezabatuko den abiaduraren posizioa zerrendan: ' ) ; readln(iNon) ; until (iNon >= BEHEMUGA) and (iNon <= iLuzera) ; rElemKopia := arAbiadurak[iNon] ; { aterako den datuaren kopia egin } Ezabaketa(arAbiadurak, iLuzera, iNon) ; AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ; writeln ( ' Hona hemen zerrendatik ezabatu den abiadura: ' , rElemKopia: 0 : 3 ) ; readln ; end . |
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.