Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 14.6.2014, 20:54   #1
Gam3r
Član
 
Član od: 19.9.2013.
Poruke: 52
Zahvalnice: 13
Zahvaljeno 0 puta na 0 poruka
Određen forumom Pomoc oko jednostavnog zadatka..

-Pozdrav ljudi, imam problem oko jednog jednostavnog zadatka, naime, zadatak trazi da se unesu 3 broja i da ih on sortira od najmanjeg ka najvecem. S' obzirom da ucim iz knjige "Programming - BjarneStroustrup", tako nesto, naisao sam na prvi problem, secam se iz srednje skole da je iz 'C' jezika bio preslikan problem, i da je bio lagan, ali sad ne mogu da ga resim, vrtim se u krug i nerviram se, posebno sto po knjizi su predjeni samo:

*Stringovi (i to tipa, unesite vase ime, kako se zovete, broj godina, da li ste muskarac ili zena itd, znaci jednostavni primeri)

*Par stvari sa 'while petljom'

*IF nareba
(a ovaj zadatak sluzi za vezbu, takodje bio je i neki zadatak koji pretvara kilometre u milje, ali to je bas lagano, pa sam to uspeo da odradim iako cini mi se nijedan takav primer nije bio u knjizi do chapter 4, dokle sam stigao)

-Tako da ovakav slican primer nije ni bio, pa sam se pogubio..

Znaci ako unesete: 4, 10, 5 on treba da ispise 4, 5, 10, ako unesete 4, 5 , 4, treba da ispise 4, 4, 5 itd.

#include "Bjarne_Code.h" // Posto iz njegove knjige ucim, on je napravio ovaj header za pocetnike da nam bude lakse
int main()
{
int a,i=0;
cout << "Unesi brojeve! \n";
while (i<3)
{
cin >> a;
i++;
}
system("Pause");
return 0;
}

*I ovo mi je bio jedan pokusaj, ali ovo ne radi nista, sem sto prihvata 3 broja koja sam uneo sa tastature, takodje, pre ovoga sam imao jos jedan pokusaj gde sam napisao program koji nalazi najveci (ili najmanji) unet broj, ali ni tu nisam imao previse srece..

Poslednja ispravka: Gam3r (14.6.2014 u 21:02)
Gam3r je offline   Odgovor sa citatom ove poruke
Stara 14.6.2014, 21:29   #2
Sass Drake
V.I.P. Zaštita
 
Član od: 30.9.2007.
Lokacija: Hypnos Control Room, Tokyo Metropolitan Government Building
Poruke: 5.914
Zahvalnice: 1.181
Zahvaljeno 1.320 puta na 1.094 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Unesene brojeve treba da smjestiš u niz intova i onda da taj niz sortiraš i ispišeš. Prouči nizove ako već nisi.
Sass Drake je offline   Odgovor sa citatom ove poruke
Stara 14.6.2014, 21:51   #3
Gam3r
Član
 
Član od: 19.9.2013.
Poruke: 52
Zahvalnice: 13
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Pa nisam, nizovi se nisu ni spominjali, zato se i nerviram, mozes li li ti ispises niz? Preko primera cu najbolje razumeti, prodjem kroz kod i vidim korak po korak sta i kako radi, pa cu se time voditi dok ne dodjem do nizova. Verujem da je kod za ovakav zadatak vrlo kratak, 7-8 linija i kraj..
Gam3r je offline   Odgovor sa citatom ove poruke
Stara 14.6.2014, 22:31   #4
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.726
Zahvalnice: 1.753
Zahvaljeno 629 puta na 363 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Edit: ispravljeno na sugestiju ivan90BG

Na ovoj stranici imas objasnjenje u slikama, sto ce ti verovatno vise pomoci od onog sto ja ovde budem napisao, ali pokusacu.
http://www.algolist.net/Algorithms/Sorting/Bubble_sort

Dakle, kada napunis vektor nekim vrednostima, moras i da ih poredis.
Poredices parove vrednosti. Ako imas 5, 1, 4, 6, 3, krenuces od prvog para. Poredis vrednosti, pa obzirom da je 1 < 5, zamenis ih, i dobices 1, 5, 4, 6, 3. U svakoj sledecoj iteraciji poredices sledeca dva para (u ovom slucaju 5 i 4 bi bio sledeci), dok ne dodjes do sortiranog niza.

Dakle imas duplu petlju.
Kod:
for(size_t i = 0 ; i < vec.size(); ++i) 
{
   for(size_t j = 0; j < vec.size() - i - 1; ++j)
   {

   }
}
U svakoj iteraciji spoljne petlje ces najvecu cifru doterati na kraj vektora, bez obzira na redosled prethodnih. Znaci, kada bi imao 5, 7, 1, 3, 4, 2, na kraju prve iteracije spoljne petlje bi imao 1 5 3 4 2 7, ako se nisam nesto preracunao. Nakon toga vise nije potrebno ici do kraja, obzirom da se na kraju vec nalazi najveca cifra (ili najmanja, u zavisnosti u kom redosledu sortiras), pa je onda zgodno da jednostavno umanjis broj iteracija unutrasnje petlje za jedan svaki put kada doteras sledecu najvecu cifru do kraja. To ces uraditi tako sto ces oduzeti spoljni brojac od velicine niza(posto se on nakon svake zavrsene iteracije unutrasnje petlje povecava za 1).

Ako ne znas kako funkcionisu ugnjezdene petlje, to izgleda ovako:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2

i = 1, j = 0
i = 1, j = 1
...

Da bi u svakoj iteraciji preuzimao i poredio dva susedna broja, morao bi da iskoristis jedan brojac, gde bi indeksiranjem uzeo trenutni element, a zatim na taj indeks dodas 1, da bi preuzeo njegov susedni (kada bi iskoristio j -1, uzeo bi prethodni).

Kod:
if(vec[j] < (ili >) vec[j + 1])
U uslovu vec.size() - i - 1, ovo "1" ces iskoristiti kako ne bi izasao van dozvoljenih granica (generalno gledaj da izbegavas indeksiranje ako mozes), obzirom da koristis j + 1. Kada te jedinice ne bi bilo, vec u prvoj iteraciji bi izasao van granica niza (j bi dosao npr. do indeksa 4 u nizu od 5 elemenata, pa kada dodas jos jedan na to, izasao si iz opsega, obzirom da nizovi krecu od indeksa 0 u C++).

Sada kada imas i uslov za poredjenje, jednostavno odradis swap vrednosti pomocu neke privremene promenljive.

Kod:
  int temp = vec[j];
vec[j] = vec[j + 1];
vec[j + 1] = temp;
Izvinjavam se na prethodnom kodu, moracu malo da obnovim algoritme.

Poslednja ispravka: Krilce (15.6.2014 u 2:58)
Krilce je offline   Odgovor sa citatom ove poruke
Sledećih 2 korisnika se zahvaljuje korisniku Krilce na korisnoj poruci:
Gam3r (14.6.2014), Teva (19.6.2014)
Stara 14.6.2014, 22:37   #5
Sun Tzu
Starosedelac
 
Član od: 10.8.2007.
Lokacija: Temples of Syrinx
Poruke: 2.193
Zahvalnice: 417
Zahvaljeno 1.006 puta na 568 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Da ume da koristi vektor, umeo bi i da reši zadatak.

Učitaj ta 3 broja u tri promenljive a, b, c. Učio si if naredbu, par if else provera koji je manji, taj prvi ispišeš i eto.

Pa kad odmakneš još vrati se i pročitaj ovo što Krilce napisa.
Sun Tzu je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Sun Tzu na korisnoj poruci:
Teva (19.6.2014)
Stara 14.6.2014, 22:54   #6
Gam3r
Član
 
Član od: 19.9.2013.
Poruke: 52
Zahvalnice: 13
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Nasao sam na yt, neke C++ tutorijale:

https://www.youtube.com/watch?v=4f3rcjZedm4

Ima nekih 100 koliko sam video, pa kad sve prodjem (par dana, dok sve pregledam) cu se vratiti na knjigu, ali hvala momci za pomoc. A sto se poslednjeg komentara tice, znam da mogu da uporedjujem svaki sa svakim, ali smara i neprakticno je, nije to resenje, sta da trebam recimo 5, ili 10 clanova da uporedjujem? Zato i nisam hteo tako da ga resim.
Gam3r je offline   Odgovor sa citatom ove poruke
Stara 14.6.2014, 23:07   #7
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

@Krilce: Algoritam za sortiranje ti ne valja. Prva iteracija spoljne petlje će recimo dovesti namanji na prvu poziciju (i ispreturati malo ostatak niza), a sledeća iteracija će ga dovesti na durugu poziciju, tako da će na kraju najmanji biti na poslednjoj poziciji, a ostaka niza ispreturan na neki način. Treba svaki element da se poredi samo sa onim koji slede posle njega (da se ne dira sortirani deo niza).
ivan90BG je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci:
Krilce (15.6.2014)
Stara 14.6.2014, 23:24   #8
Sun Tzu
Starosedelac
 
Član od: 10.8.2007.
Lokacija: Temples of Syrinx
Poruke: 2.193
Zahvalnice: 417
Zahvaljeno 1.006 puta na 568 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Citat:
Gam3r kaže: Pregled poruke
sta da trebam recimo 5, ili 10 clanova da uporedjujem?
Onda ne bi dobio taj zadatak tako rano u knjizi.
Sun Tzu je offline   Odgovor sa citatom ove poruke
Stara 14.6.2014, 23:53   #9
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: Pomoc oko jednostavnog zadatka..

@Gam3r
Sortiranje nizova je jedna od početnih i osnovnih stvari programiranja.
Međutim, kako kažeš da niste radili nizove vrlo teško možeš da uradiš sortiranje brojeva, ako ne razumeš nizove.

Zavisno od tvog interesovanja ka programiranju i vremena koje imaš na raspolaganju možeš da odabereš jedan od dva načina da rešiš tvoj problem.

1. Nađeš neku knjigu ili tutorijal na netu gde su nizovi obrađeni na samom početku. Potrošiš dan-dva da pređeš to i uradiš sortiranje po svojoj logici, mislim da nema potrebe da se zamaraš optimizovanim algoritmima sortiranja.
Ako ti treba pomoć oko pronalaska odgovarajućeg materijala javi se.

2. Da nađeš na netu gotovo rešenje i da ga prekopiraš bez previše razumevanja. Kao što sam ti rekao sortiranje je jedna od bitnih osnova, i verujem da nema programskog jezika za koji ne možeš da nadješ primer sortiranja brojeva.
Ivan452 je offline   Odgovor sa citatom ove poruke
Stara 15.6.2014, 0:01   #10
Gam3r
Član
 
Član od: 19.9.2013.
Poruke: 52
Zahvalnice: 13
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Pa ne bih da samo prekorpiram, vec da razumem to, do sada, sve sto je bilo u knjizi sam razumeo, neke kodove koji su tamo dati kao primer sam sam menjao, isprobavao svasta nesto, tako da sam taj pocetak bas lepo razumeo, i onda kada sam radio takozvane 'drilove' na kraju chaptera, sam zapeo, posto to nije predjeno. Sada sam resio da pogledam ovih 100 (tako nesto) tutorijala sto sam video na netu, pa cu se vratiti na zadatke, verujem da cu razumeti nizove kad dodjem dotle (oko 40-50. tutorial je po redu), pa cu da nastavim po knizi da radim. To mi je neki plan za sada.
Gam3r je offline   Odgovor sa citatom ove poruke
Stara 15.6.2014, 3:01   #11
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.726
Zahvalnice: 1.753
Zahvaljeno 629 puta na 363 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Citat:
ivan90BG kaže: Pregled poruke
@Krilce: Algoritam za sortiranje ti ne valja. Prva iteracija spoljne petlje će recimo dovesti namanji na prvu poziciju (i ispreturati malo ostatak niza), a sledeća iteracija će ga dovesti na durugu poziciju, tako da će na kraju najmanji biti na poslednjoj poziciji, a ostaka niza ispreturan na neki način. Treba svaki element da se poredi samo sa onim koji slede posle njega (da se ne dira sortirani deo niza).
Ispravljeno. Odradjeno u zurbi, a i ne mogu da se pohvalim da sam u skorije vreme pipao algoritme za sortiranje (uglavnom se koriste vec gotova resenja ).
Krilce je offline   Odgovor sa citatom ove poruke
Stara 15.6.2014, 8:58   #12
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Trebalo mi je malo vremena da razmislim šta si napisao. Napisao si bubble sort (samo bez provere sortiranosti tokom rada). Radi, ali nije baš najjednostavniji za početnika da razume.

Cenim da je ovo najjednostavniji:

Kod:
for (int i = 0; i < vec.size()-1; ++i) {
    for (int j = i+1; j < vec.size(); ++j) {
        if (vec[i] < vec[j]) {
            int temp = vec[i];
            vec[i] = vec[j];
            vec[j] = temp;
        }
    }
}
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 15.6.2014, 9:55   #13
darko31
Starosedelac
 
Član od: 27.11.2012.
Lokacija: Novi Bečej/Sad
Poruke: 1.569
Zahvalnice: 134
Zahvaljeno 406 puta na 371 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Evo par klipova o Selection i Bubble sortu koji su mi pomogli da ih lepo razumem

https://www.youtube.com/watch?v=y3hf_dU9mlE
https://www.youtube.com/watch?v=dUHlCZ6qCus
darko31 je offline   Odgovor sa citatom ove poruke
Stara 19.6.2014, 17:19   #14
Teva
Starosedelac
 
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
Određen forumom Re: Pomoc oko jednostavnog zadatka..

Citat:
Gam3r kaže: Pregled poruke
A sto se poslednjeg komentara tice, znam da mogu da uporedjujem svaki sa svakim, ali smara i neprakticno je, nije to resenje, sta da trebam recimo 5, ili 10 clanova da uporedjujem? Zato i nisam hteo tako da ga resim.
Pa ne gine upoređivanje članova Bubble i selection sortovi pomenuti su manje više upoređivanje svakog sa svakim
Teva je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Procena računara alien Šta da kupim? 6942 17.12.2023 10:28
Gledanje filmova putem Android telefona? Pomoc hitno Kobilic Aparati i oprema 34 13.8.2015 11:24
pomoc eksel (rešavanje zadataka) boza16v Aplikativni softver 0 1.12.2012 19:12
Samsung gt-S5230 Aplikacije??? Pomoc Kobilic Aparati i oprema 26 17.9.2012 18:38
Pomoc oko pravljenja programa(C) RUSuper Programiranje 14 20.4.2012 17:35


Sva vremena su po Griniču +2 h. Sada je 18:33.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com