ZER DAKIDAN: Array bat erabiltzeko gai naiz. ZER IKASIKO DUDAN: FUNCTION erako azpiprograma batek ez du Array datu-motako zerrenda bat itzuliko. Horregatik, array bat emaitza izan behar bada beti PROCEDURE erako azpiprogramaz prozesatuko dugu. |
ESKATZEN DEN PROGRAMA
Kateekin lan eginez 20. Ariketa: zerrendak (III) programatik abiatu eta ZZZZ-LLL itxurako matrikulak biltzen dituen hasierako zerrendatik beste zerrenda bat lortu LLLZZZZ itxurako datuekin. Suposatuko dugu programari emandako matrikulen datuak egokiak direla, baina programak datuen egokitasuna kontrolatu beharko balu gogoratu 19. Ariketa: karaktere-kateak (II) programan ikasitakoa.
Gure programaren zereginak:
- Datuak jaso eta ZZZZ-LLL itxurako matrikulen zerrenda lortu, hasierako zerrenda izango dena
- Hasierako zerrendaren elementu guztiak banan banan prozesatu eta LLLZZZZ itxurako zerrenda berria eskuratu
Prozedura bai, non bilatzen den zerrenda irteerako parametroa den:
1 2 3 | procedure ZerrendaBerriaLortu( const asMatrikulak: tasHasierakoZerrenda; var asKateak: tasBukaerakoZerrenda; iLuzera: integer ); |
1 2 | function fnasZerrendaLortu( const asMatrikulak: tasHasierakoZerrenda; iLuzera: integer ) : tasBukaerakoZerrenda ; |
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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | { 21. ariketa: hainbat matrikula zerrenda zerrenda batean jaso eta } { zerrenda berri bat lortu. } { ZZZZ-LLL (non Z zifrak eta L letrak diren) formatuko matrikulak } { gordetzen dituen arrayarekin lan egingo da. Zerrenda berria lortu } { LLLZZZZ itxura datuekin. } program Ariketa_21 ; const BEHEMUGA = 1 ; GOIMUGA = 10 ; type tsKate8 = string [ 8 ] ; tasHasierakoZerrenda = array [BEHEMUGA .. GOIMUGA] of tsKate8 ; tsKate7 = string [ 7 ] ; tasBukaerakoZerrenda = array [BEHEMUGA .. GOIMUGA] of tsKate7 ; procedure HasierakoZerrendaBete( var asMatrikulak: tasHasierakoZerrenda; var iLuzera: integer ) ; var k : integer ; begin repeat write ( ' Zerrendak zenbat elementu izango ditu? ' ) ; readln(iLuzera) ; until (iLuzera >= BEHEMUGA) and (iLuzera <= GOIMUGA) ; writeln ; for k:=BEHEMUGA to iLuzera do begin write ( ' ' '1234-XYZ' ' itxurako ' , k, '. matrikula eman: ' ) ; readln(asMatrikulak[k]) ; end ; end ; procedure HasierakoZerrendaIkusi( const asMatrikulak: tasHasierakoZerrenda; iLuzera: integer ) ; var iIndizea : integer ; begin writeln ( ' Matrikulen zerrendaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 4 , '. matrikula = ' , asMatrikulak[iIndizea]) ; end ; end ; procedure BukaerakoZerrendaIkusi( const asKateak: tasBukaerakoZerrenda; iLuzera: integer ) ; var iIndizea : integer ; begin writeln ( ' Emaitzen zerrendaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 4 , '. katea = ' , asKateak[iIndizea]) ; end ; end ; procedure ZerrendaBerriaLortu( const asMatrikulak: tasHasierakoZerrenda; var asKateak: tasBukaerakoZerrenda; iLuzera: integer ) ; var iIndizea : integer ; sZenbakiak, s3Letrak : tsKate7 ; begin for iIndizea:=BEHEMUGA to iLuzera do begin sZenbakiak := Copy(asMatrikulak[iIndizea], 1 , 4 ) ; s3Letrak := Copy(asMatrikulak[iIndizea], 6 , 3 ) ; asKateak[iIndizea] := s3Letrak + sZenbakiak ; end ; end ; { function fnasZerrendaBerriaLortu(const asMatrikulak: tasHasierakoZerrenda; iLuzera: integer) : tasBukaerakoZerrenda ; var asKateak : tasBukaerakoZerrenda ; iIndizea : integer ; sZenbakiak, s3Letrak : tsKate7 ; begin for iIndizea:=BEHEMUGA to iLuzera do begin sZenbakiak := Copy(asMatrikulak[iIndizea], 1, 4) ; s3Letrak := Copy(asMatrikulak[iIndizea], 6, 3) ; asKateak[iIndizea] := s3Letrak + sZenbakiak ; end ; fnasZerrendaBerriaLortu := asKateak ; end ; } (* ---------------------- PROGRAMA NAGUSIA ---------------------- *) var asMatrikulak : tasHasierakoZerrenda ; asKateak : tasBukaerakoZerrenda ; iLuzera : integer ; begin writeln ; writeln ; writeln ; HasierakoZerrendaBete(asMatrikulak, iLuzera) ; HasierakoZerrendaIkusi(asMatrikulak, iLuzera) ; writeln ; writeln ( ' Matrikulen zerrenda prozesatzen...' ) ; writeln ; ZerrendaBerriaLortu(asMatrikulak, asKateak, iLuzera) ; { BAI } //asKateak := fnasZerrendaBerriaLortu(asMatrikulak, iLuzera) ; { EZ } BukaerakoZerrendaIkusi(asKateak, iLuzera) ; writeln ; readln ; end . |
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
![]() |
Arraya itzultzen duen funtziorik ez dugu programatuko, gauza bera gertatzen da erregistroekin (22. Ariketa: erregistroak (I)) |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.