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 1753 korisnika na forumu :: 87 registrovanih, 8 sakrivenih i 1658 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 33 bren, 6footboy, aleph_one, Andrija357, ArchaBasha, Asparagus, Bo96, bobo85, Bobrock1, bojansmudja, bojanstros9, Bojcca, bojcistv, cenejac111, Chainsaw, CHARLIE JA., Clouseau, Colt D, Comyymoc, CrveniSolaris, dejandr, Despot Đurađ, Dežurni pod palubom, Dimitrise93, Djota1, djuradj, Dragan1998, Draganeli, DrNeoCortex, famoso, Gheljda, Helket, Hitri, Imperator_Aleksandr_lll, joca83, Joint Chief, JOntra, Kajzer Soze, kojotuzamku, kreker, lacko, Lance Guest, laurusri, M74AB3, Markan90, MB120mm, mercedesamg, Miki281, milenko crazy north, Miler88, MiloradKomadic, Mis uz pusku, Mićko, mm1811, MrG, mrkanidja, Ndsk, Njubara, Nobunaga, nuke92, oldtimer, Otto Grunf, pablojepao, Panter, pirke96, procesor, PuškeiPlavuše, rikirubio, S-G, samsung, sasovsky, Semberija, sevenino, Sky diver 29, Smiljkovich, tmanda323, Tribal, Trimi68, ulogovan, Vaske8990, virked, Vlajman1957, VonDrobac, vukajlo71, vuksa72, XBMC, 1324