Pomoć oko klasa i dinamičkih nizova

Pomoć oko klasa i dinamičkih nizova

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Rešavao sam zadatak, dobijao čudne rezultate i nekako ga rešio ali mi jedna stvar nije jasna.

https://www.mycity.rs/must-login.png
https://www.mycity.rs/must-login.png

To su potrebni fajlovi. Ja sam trebao da izmenim ovaj drugi, odnosno da dodam deo koda.


template <class elemType> void arrayListType<elemType>::removeAll(const elemType& removeItem) { // To Do:  Write the logic for removeAll() here.  Your code may // call removeAt(), but for full credit it should not call remove().             for(int i=0; i < length; i++)      if (isItemAtEqual(seqSearch(list[i]), removeItem))         removeAt(seqSearch(list[i--])); } //end removeAll

Ono što meni nije jasno je zašto brišem list[i--], a upoređujem list[i].



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

ti brises list[i], a onda i smanjujes za 1.

removeAt(seqSearch(list[i--])); je isto sto i removeAt(seqSearch(list[i])); i--;

Ovo si verovatno i znao, ali nije na odmet da napomenem za svaki slucaj.

Koliko ja vidim i umanjujes jer se posle removeAt smanjuje length za 1, pa ako bi u isto vreme povecao i i za 1, preskocio bi jedan element.



offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Očigledno da sam sinoć bio i suviše umoran.
Jutros sam shvatio, a bilo je tako jednostavno. Još ne mogu da verujem da nisam odmah uočio.

Znam da removeAt briše element iz niza i skraćuje dužinu niza za jedan.

Ono što mi je promaklo je zašto ja moram da smanjim poziciju unutar niza za jedan.

Ako imam niz u kome se element koji izbacujem pojavljuje više puta uzastopno
1, 2, 2, 3, 4, 8, 7, 9, 3, 5

Kao ovde 2 onda će se unutar petlje proveravati redom prvi, drugi, treći element.

Kad proverim list[1] vrednost je dva, odnosno taj element se briše, a dužina niza se smanjuje za jedan. list[3] postaje novi list[2].

E tu je i bio problem jer brojač sad nastavlja da proverava list[3], a stari list[3] je već postao list[2].

U svakom slučaju hvala na odgovoru.

Ko je trenutno na forumu
 

Ukupno su 740 korisnika na forumu :: 36 registrovanih, 6 sakrivenih i 698 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., AbleArcher83, amaterSRB, caesar, celeron, crnitrn, darcaud, djboj, Filip Marinković, galijot, GreenMan, Koca Popovic, komkom, lukac, Marko Marković, Marko873, milos.cbr, Mirage 2000N, Mixelotti, mnn2, Nebo_M, Nebojsa Miletic, nemkea71, raptorsi, Recce, ruso, sakota79, segax1, Snorks, Srky Boy, USSVoyager, vlad the impaler, Vlada1389, vlvl, willie, zajcev1