Array batean ikasleen izenak ditugu eta beste array batean ikasleen notak gorderik daude. asIzenak arraya karaktere-kateak biltegitzen ditu, eta arNotak arrayak zenbaki errealak jasoko ditu.
Array biren arteko lotura posizioetan datza, hau da, array baten lehen posizioko informazioa elkarturik dago beste arrrayaren lehen posizioko informazioarekin, eta horrela posizio guztiekin. Noski, luzera efektiboa bera delako, array bientzat lan egiten duen iLuzera aldagai bakarra erabiliko dugu.
Adibidez:
| iLuzera=3 |
|
Hona hemen iturburu-programa, aurrexeago erregistroak ikastean array bakarra erabiliko dugu:
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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | program BiArrayParalelo ; const BEHEMUGA = 1 ; GOIMUGA = 40 ; type tarNotak = array [BEHEMUGA .. GOIMUGA] of real ; tsKatea = string [ 30 ] ; tasIzenak = array [BEHEMUGA .. GOIMUGA] of tsKatea ; procedure IzenakLortu( var asIzenak: tasIzenak; var iLuzera: integer ) ; var iIndizea: integer ; begin repeat write ( 'Zenbat ikasle dira? ' ) ; readln(iLuzera) ; until (iluzera >= BEHEMUGA) and (iLuzera <= GOIMUGA) ; writeln ( 'Izenen arrayan ' , iLuzera, ' datu gordetzen' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin write ( 'Eman ' , iIndizea, '. izena: ' ) ; readln(asIzenak[iIndizea]) ; end ; writeln ; end ; procedure NotakLortu( var arNotak: tarNotak; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ( 'Noten arrayan ' , iLuzera, ' datu gordetzen' ) ; randomize ; for iIndizea:=BEHEMUGA to iLuzera do begin arNotak[iIndizea] := random* 10 ; { 0.0 eta 9.999 arteko balioak } end ; end ; procedure IzenakIkusi( const asIzenak: tasIzenak; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ( 'Izenen arrayaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 2 , '. ikaslea = ' , asIzenak[iIndizea]) ; end ; end ; procedure NotakIkusi( const arNotak: tarNotak; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ( 'Noten arrayaren edukia: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin writeln (iIndizea: 2 , '. nota = ' , arNotak[iIndizea]: 0 : 3 ) ; end ; end ; procedure NotakInkrementatu( var arNotak: tarNotak; iLuzera: integer ) ; var iIndizea: integer ; begin writeln ( 'Suspendituak inkrementatzen: ' ) ; for iIndizea:=BEHEMUGA to iLuzera do begin if arNotak[iIndizea] < 5.0 then begin arNotak[iIndizea] := arNotak[iIndizea] + 1.0 ; end ; end ; end ; function fniIkasleaBilatu( const asIzenak: tasIzenak; iLuzera: integer ; sGakoa: tsKatea): integer ; var iIndizea: integer ; boAurkitua: Boolean ; begin iIndizea := BEHEMUGA ; boAurkitua := FALSE ; while (iIndizea <= iLuzera) and not boAurkitua do begin if asIzenak[iIndizea] = sGakoa then boAurkitua := TRUE else iIndizea := iIndizea + 1 ; end ; if boAurkitua then fniIkasleaBilatu := iIndizea else fniIkasleaBilatu := - 1 ; { -1 gezurrezko posizioa litzateke } end ; (* ---------------------- PROGRAMA NAGUSIA ---------------------- *) var arNotak : tarNotak ; asIzenak : tasIzenak; iLuzera : integer ; sGakoa : tsKatea ; iPosizioa: integer ; begin writeln ; writeln ; IzenakLortu(asIzenak, iLuzera) ; IzenakIkusi(asIzenak, iLuzera) ; writeln ; NotakLortu(arNotak, iLuzera) ; NotakIkusi(arNotak, iLuzera) ; writeln ; writeln ( 'Suspendituen notak inkrementatu' ) ; NotakInkrementatu(arNotak, iLuzera) ; NotakIkusi(arNotak, iLuzera) ; writeln ; writeln ( 'Ikasle baten nota aldatu' ) ; write ( 'Ikaslearen izena eman: ' ) ; readln(sGakoa) ; iPosizioa := fniIkasleaBilatu(asIzenak, iLuzera, sGakoa) ; if iPosizioa = - 1 then writeln (sGakoa, ' izena duen ikaslerik ez dago' ) else begin write (asIzenak[iPosizioa], ' ikaslearen nota berria eman: ' ) ; readln(arNotak[iPosizioa]); writeln ; (* asIzenak[iPosizioa] edo sGakoa *) writeln ( 'Datuak "' , asIzenak[iPosizioa], '" ikaslearen nota aldatu ondoren' ) ; NotakIkusi(arNotak, iLuzera) ; end ; readln ; end . |
iruzkinik ez:
Argitaratu iruzkina