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:
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
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.