Problem sa programom za izmeni redosleda elemenata

2

Problem sa programom za izmeni redosleda elemenata

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Aha, onda nisam bio u pravu. k ce onda biti isto kao i n. Ali zasto? Zar nebi trebalo da bude isto ako stavim k <= n?

Inace, hvala na pomoci. Very Happy



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Napisano: 13 Maj 2014 21:17

crusher ::Nju sam iskoristio da bih posle mogao da dam promenljivi j indeks poslednjeg elementa u nizu a.Tek sada videh ovo i... Shocked

Koji je indeks poslednjeg elementa u nizu od n elemenata? Mr. Green

Dopuna: 13 Maj 2014 21:20

crusher ::Ali zasto? Zar nebi trebalo da bude isto ako stavim k <= n?Pazi, kada k bude jednako n-1, uslov petlje će biti zadovoljen (n-1 < n, zar ne Very Happy). Odmah nakon toga, obzirom da je uslov zadovoljen, brojač se inkrementira (k++). Dakle, k dobija vrednost k + 1 = n - 1 + 1 = n => k = n.

Dopuna: 13 Maj 2014 21:28

Svakako, logika ti je loša. Menjaš jedan element samo sa jednim elementom. Znači, nikako ne možeš da imaš ugnježdene petlje. Ovo što si ti prvobitno napisao menja poziciju jednog elementa (A[i]) sa svim elementima (A[j] unutar ugnježdene petlje). Zbog toga je rezultat nekorektan.

Takođe, ovo je moguće uraditi i na jedan jednostavniji i razumljiviji način, samo ako se pažljivo čita zadatak. Menjaš prvi i poslednji, drugi i pretposlednji itd. Šta u stvari radiš? Praviš odraz u ogledalu (mirror kopija) datog niza, odnosno samo okrećeš redosled elemenata. Redosled menjaš najjednostavnije tako što sve elemente niza prepišeš u pomoćni niz počevši od poslednjeg, a zatim sve elemente iz pomoćnog niza vratiš u početni niz, počevši od prvog (najnormalnije prepišeš niz).

Dakle, nije sve u tome da se samo sedne i da se kuca kod, već treba pre toga malo i razmisliti, uzeti neki konkretan primer, izvrteti, u glavi ili na papiru. Nakon toga, kada se shvati suština, sve ide mnogo lakše. Very Happy



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Za rešenje ovog zadatka je potrebno da se prođe samo kroz pola niza. Recimo da imamo niz niz sa n elemenata, petlja za rešenje zadatka izgleda ovako:
for (int i = 0; i < n / 2; ++i) {   int tmp = niz[i];   niz[i] = niz[n - i - 1];   niz[n - i - 1] = tmp; }

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Srki, ne prepisuj. LOL

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Hvala svima na pomoci Very Happy Very Happy

Ko je trenutno na forumu
 

Ukupno su 1212 korisnika na forumu :: 52 registrovanih, 7 sakrivenih i 1153 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: 357magnum, Acivi, adamantadv, ajo baba, armor, ArmyBoss, Atomski čoban, bokisha253, cinoeye, dane007, darcaud, dekan.m, Dimitrise93, dragoljub11987, dule10savic, flash12, Futurama, Georgius, goxin, hooraay, Kaplar2, Karla, Kubovac, Lieutenant, Marko Marković, mgolub, mikrimaus, milenko crazy north, milimoj, mkukoleca, moldway, nebkv, ozzy, Panter, panzerwaffe, pein, Rakenica, robertino, royst33, ruger357, Sir Budimir, sombrero, SR-3m, stalja, suton, Tragač, tubular, VJ, Wrangler, zdrebac, Žrnov, žeks62