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.

[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]

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 837 korisnika na forumu :: 58 registrovanih, 3 sakrivenih i 776 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4. Ozrenska, 9191vs, AleksandarV, Aska, Ba4e, berste23, bgs, Bobrock1, Bojan198527, Chainsaw, coaa, cuvarkuca, darkkran, darkojovxp, Darth Malak, dexteroza, Doc, dok80, draganl, dragisa dragisa, Folkstar, GT, ISOF, Jozo74, kutija11, Lazarus, Lester Freamon, Lubenica303, Maki1981, mgolub, Milenko1980., Milos82, Mićko, mnn2, Naum T, Ns1975, obsc, Orc, Parker, Perudin_92, Peruta, pzoca, Radogost, ruger357, skok, sosko, SympathyForTheDevil, taz1cl, Tila Painen, TRZH92, TTN, vandrej, vladom6, volimpivuvolimrakiju, vukajlo71, Zoran_Partizan, zziko, Žoržo