2023(e)ko martxoaren 23(a), osteguna

10. astea | txertaketa array batean

Array batean elementu berri bat txertatzen duen 05_Txertaketa.pas programa aurrean duzula, hurrengo irudia azter ezazu. Lagungarria izan daitekeelakoan, hitzezko azalpena ArrayAlgoritmoak_2 [10 minutu 9 segundo] bideo honetan ikus dezakezu.



Irudian zenbaki errealen arNotak array bat daukagu, bere luzera efektiboa iLuzera aldagaiak adierazten du eta 4 balio du. Irudian ikusten da ere arNotak array hori bete-beterik ez dagoela. Demagun 66.6 balioa txertatu nahi dugulua arrayaren 2 posizioan.



Balio berria arrayan gorde aurretik, tokia egin behar zaio FOR-DOWNTO-DO baten bitartez, eta tokia egina dagoenean balio berria txertatuko da eta, noski, iLuzera aldagaia inkrementatu beharko da.






Irudia handiago ikusteko bere gainean klik egin



Programa nagusiak lau parametro pasatzen dizkio funtzioari, lehenengo biak sarrera/irteerakoak eta azken biak sarrerakoak. FOR-DOWNTO-DO kontrol-egiturari esker hiru iterazi emango dira adibide honetan: 


  1. iterazioan: iIndizea=4 eta libre dagoen arNotak[5] posizioan arNotak[5] balioa kopiatzen delako 56.8 datua bikoiztuta geratzen da

  2. iterazioan: iIndizea=3 eta bikoiztuta dagoen arNotak[4]posizioko balioa zapaldurik suertatzen da arNotak[3] balioa bere gainean kopiatuz, horregatik 52.9 datua bikoiztuta geratzen da

  3. iterazioan: iIndizea=2 eta bikoiztuta dagoen arNotak[3]posizioko balioa zapaldurik suertatzen da arNotak[2] balioa bere gainean kopiatuz, horregatik 17.1 datua bikoiztuta geratzen da


Irudiaren adibidean 3. iterazioarekin bukatzen da prozesu errepikakorra, hots, txertaketa burutzeko prestakizunak egin dira baina oraindik txertaketa egin gabe dago. Txertaketa gauzatzeko ondoko bi hauek egin behar dira:


  • Eskatzen zen arNotak[3] posizioan 66.6 balioa gorde

  • Luzera efektiboa aldatu denez iLuzera:=5 jarri behar da (bigarren parametroa irteerakoa izatearen arrazoia hauxe da)





Adibidez, tokia egin eta iNon posizioan rElementua txertatu:

{ 05_Txertaketa.pas }

procedure Tartekaketa(var arNotak: tarZerrenda;
var iLuzera: integer;
rElementua: real;
iNon: integer) ;
var
iIndizea: integer ;
begin
for iIndizea:=iLuzera downto iNon do
begin
arNotak[iIndizea+1] := arNotak[iIndizea] ;
end ;
arNotak[iNon] := rElementua ;
iLuzera := iLuzera + 1 ;
end ;




Elementu bakar bat txertatzeaz gain, array baten elementu guztiak banan-banan txerta daitezke array ordenatu bat prestatzeko, ikusi 10. astea | mediana eta batezbestekoa adibidea.




Array batean elementu berri bat txertatzeko algoritmoa ulertuz gero, erraza da ulertzea array batean elementu bakar bat nola kentzen den (ikusi 10. astea | ezabaketa array batean irudia eta azalpena).



 

iruzkinik ez:

Argitaratu iruzkina