2024(e)ko martxoaren 18(a), astelehena

10. astea | ezabaketa array batean

Array batean elementu bakar bat ezabatzen duen 06_Ezabaketa.pas programa aurrean duzula, hurrengo irudia azter ezazu. Lagungarria izan daitekeelakoan, hitzezko azalpena ArrayAlgoritmoak_4 [4 minutu 46 segundo] bideo honetan ikus dezakezu.

Irudian zenbaki errealen arNotak array bat daukagu, bere luzera efektiboa iLuzera aldagaiak adierazten du eta 5 balio du. Demagun 2 posizioan dagoen 17.1 balioa arraytik kendu nahi dugula, hots, arrayaren bigarren elementua ezabatu nahi dugula. Azkenean, noski, iLuzera aldagaiaren edukia 4 izango da.

Irudia handiago ikusteko bere gainean klik egin

Programa nagusiak hiru parametro pasatzen dizkio funtzioari, lehenengo biak sarrera/irteerakoak eta azkena sarrerakoa. FOR-TO-DO kontrol-egiturari esker hiru iterazi emango dira adibide honetan: 
  1. iterazioan: iIndizea=2 delako 17.1 datua zapalduta geratuko da, izan ere arNotak[2] posizioan arNotak[3] balioa kopiatzen delako eta 72.9 datua bikoiztuta geratzen da
  2. iterazioan: iIndizea=3 delako 72.9 datua zapalduta geratuko da, izan ere arNotak[3] posizioan arNotak[4] balioa kopiatzen delako eta 56.8 datua bikoiztuta geratzen da
  3. iterazioan: iIndizea=4 delako 56.8 datua zapalduta geratuko da, izan ere arNotak[4] posizioan arNotak[5] balioa kopiatzen delako eta 66.6 datua bikoiztuta geratzen da
Adibide honetan 3. iterazioarekin bukatzen da prozesu errepikakorra, eta ezabaketa benetan gauzatzeko arrayaren luzera dekrementatu beharra dago: arrayaren luzera efektiboa 4 izan dadila, horregatik iLuzera:=4 jarri behar da (bigarren parametroa irteerakoa izatearen arrazoia hauxe da).
{ 06_Ezabaketa.pas }

procedure Ezabaketa(var arNotak: tarZerrenda;
                    var iLuzera: integer;
                           iNon: integer);
var
   iIndizea: integer;
begin
   for iIndizea:=iNon to iLuzera-1 do
   begin
      arNotak[iIndizea] := arNotak[iIndizea+1];
   end;
   iLuzera := iLuzera - 1;
end;
Array batean elementu bat nola ezabatzen den ulertuz gero, erraza da ulertzea array batean elementu berri bat nola txertatzen den (ikusi 10. astea | txertaketa array batean irudia eta azalpena).

Array bateko elementu bat ezabatzeko algoritmoa ulertuz gero, erraza da ulertzea array batean elementu bakar berri bat nola sar daitekeen (ikusi 10. astea | txertaketa array batean irudia eta azalpena).



Eta arrayaren elementu bat baino gehiago ezabatu behar baditugu?

Arrayaren elementu bat baino gehiago ezabatu behar baditugu bi aukera ditugu:

  1. Goiko algoritmoa hainbat aldiz errepikatzea (08a_HainbatEzabaketa.pas programa).
  2. Array laguntzaile bat erabiltzea (08b_HainbatEzabaketa.pas programa). Adibidez, balio txikiak array batetik kendu: Datuak ez dira ezabatuko; horren ordez, datu onargarriekin (ezabatuko ez direnekin) array berri bat sortuko da. Ikusi 10. astea | hainbat ezabaketa array batean artikulua, non elementu txikiak array batetik kenduko diren.
 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.