Računalstvo-C++

poruka: 21
|
čitano: 9.440
|
moderatori: DrNasty, pirat, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Računalstvo-C++

jel netko zna možda ovo rješit:

 

1.Zadan je niz od cetiriju cijelih brojeva 28 10 6 -2. Metodom
mjehurica sortiraj zadani niz u rastucem poretku.

 

 

2.Zadan je niz od cetiriju cijelih brojeva 3 10 11 -4. Metodom
mjehurica sortiraj zadani niz u padajucem poretku.

TCP/IP - tri crna piva / i pelinkovac
17 godina
protjeran
offline
Računalstvo-C++

#include <iostream>
#define MAX 4
using namespace std;

int main()
{
    int unos[MAX] = {28, 10, 6, -2};
    int i, j, pom;

    for(i = 0; i < MAX-1; i++)
        for(j = 0; j < MAX-1-i; j++)
            if(unos[j+1] < unos[j])    {
                pom = unos[j];
                unos[j] = unos[j+1];
                unos[j+1] = pom;
            }
    for(i = 0; i < MAX; i++)
        cout << unos[i] << "\t";
    cin.get();
    return 0;
}

 

Uz tek minimalno inteligencije samostalno ćeš sada moći rješiti i drugi zadatak.

 

15 godina
neaktivan
offline
RE: Računalstvo-C++

ma jbg ja krivo napiso..ne trebam znat kak napisat u C-u,nego moram po koracima objasnit šta se dešava,kaj se događa u glavnom programu i tak...

TCP/IP - tri crna piva / i pelinkovac
17 godina
offline
RE: Računalstvo-C++

jel sad kužiš o čemu se radi?

inicirao si jednodimenzionalno polje od 4 mjesta . Ta 4 mjesta imaju indexe 0 1 2 3.

Sa dvije petlje koje imaju kao brojače i i j varijable češljaš to polje po indexima. Na taj način redaš brojeve po veličini,

a klljučna ti je naredba if (unos[j+1] < unos[j]) za poredati brojeve sa naredbama ispod nje.

u stvari, pokušaj ovaj drugi zadatak napisati sam, nakon što analiziraš prvi, tako ćeš najbolje vidjeti kako "mjehurići" rade

Poruka je uređivana zadnji put uto 1.12.2009 17:53 (Floki).
16 godina
offline
RE: Računalstvo-C++

@Floki - ti jesi sortiro, ali ne metodom mjehurića (olitiga bubble sort ) ;)

 

I koristio si čisto c-ovski kod (osim cout), u c++-u ima na raspolaganju struktura podataka vector, nalazi se u STL-u. Mislim da je to bio cilj ;)

 

Za početnike u c-u, preporučam http://degiorgi.math.hr/prog1/materijali/p1-vjezbe.pdf . Jako dobro napravljena skripta (ima i nastavak ako ćeš trebat), a sortiranje počinje na stranici 113.

 

edit : I daj nemoj koristit define, to je najgluplja naredba koja postoji... u ozbiljnijim kodovima se samo izgubiš u tome.

Poruka je uređivana zadnji put pet 4.12.2009 18:42 (Luuka).
17 godina
offline
RE: Računalstvo-C++

Što ovo gore nije upravo Boubble sort algoritam za sortiranje polja?

16 godina
offline
RE: Računalstvo-C++

Ne. Ti si napravio najobičniji sort. Bubble sort gleda samo susjedne dokle god radi promjene. Ima manje prolazaka po elementima, brži je, i nisu 2 fora, nego while i for :D Pogledaj u skripti na koju sam stavio link.

17 godina
offline
RE: Računalstvo-C++

To sam ja objasnio po Kovačeviću, a kod je napisao ovdje onaj drugi

OK, hvala, skužio sam na što si ukazao

dobra je skripta, hvalaOsmijeh

Poruka je uređivana zadnji put pet 4.12.2009 19:10 (Floki).
16 godina
offline
RE: Računalstvo-C++

Ako će nekom trebat, evo i drugi dio skripte : http://degiorgi.math.hr/prog2/materijali/p2-vjezbe.pdf

 

I samo mala napomena - nema učenja programiranja bez compilera, samo uz papir i olovku... puno kodova napisat treba :D

evo primjeri zadataka : http://degiorgi.math.hr/prog1/materijali/p1-zadaci_za_prakticni_kolokvij.pdf

17 godina
protjeran
offline
RE: Računalstvo-C++
Luuka kaže...

Ne. Ti si napravio najobičniji sort. Bubble sort gleda samo susjedne dokle god radi promjene. Ima manje prolazaka po elementima, brži je, i nisu 2 fora, nego while i for :D Pogledaj u skripti na koju sam stavio link.

A kakav je to najobičniji sort? Smijeh Bubble sort nikada nije bio s while i for, već dvostruka for petlja. Čak ti to i piše i to baš na početku 113. stranice ove knjige na koju se pozivaš Smijeh Citiram:

 

for ( i = 0 ; i < n − 1 ; i++)
 for ( j = i + 1 ; j < n ; j++)

 i f ( ni z [ i ] > ni z [ j ] ) {
 int temp = ni z [ i ] ;
 ni z [ i ] = ni z [ j ] ;
 ni z [ j ] = temp ;
 }

 

Također, bubble sort je i analizom i u praksi najsporiji sort (O(ne2)).

 

Luuka kaže...

edit : I daj nemoj koristit define, to je najgluplja naredba koja postoji... u ozbiljnijim kodovima se samo izgubiš u tome.

 

Ako već nešto omalovažavaš onda barem navedi neki kvalitetan argument jer ovo što pišeš je u najmanju ruku smješno. Štoviše, define je jedna od najkorisnijih naredbi kada se radi s statičkim poljima jer je tako najjednostavnije promjeniti njihov broj elemenata. Prolistaj malo knjige i skripte, poput onih što se koriste na FERu pa ćeš vidjeti koliko to zna biti korisno. Npr.:

 

int polje[5];

for(int i = 0; i < 5; i++)...

 

I sada ako odjednom poželiš promjeniti broj elemenata moraš NA SVIM MJESTIMA U CODE-u promjeniti umjesto 5 neku drugu vrijednost tj. svugdje gdje se vrši analiza tog polja, a to zna biti nekad i jako puno posla. S upotrebom naredbe define to se mijenja samo na jednom mjestu:

 

#define MAX 10

int polje[MAX];

for(int i = 0; i < MAX; i++)...

 

Ako ne znaš radije pitaj nego da buniš i krivo učiš ljude.

 

Floki kaže...

To sam ja objasnio po Kovačeviću, a kod je napisao ovdje onaj drugi

OK, hvala, skužio sam na što si ukazao

dobra je skripta, hvalaOsmijeh

Kojem Kovačeviću?

Poruka je uređivana zadnji put sub 12.12.2009 16:03 (Tracer).
17 godina
offline
Računalstvo-C++

Željko Kovačević

"C++ Analiza i primjena"

BubbleSort - dvostruka petlja for - najveći element se postavlja na kraj - polje se ponovno sortira da se izuzmu sortirani elementi

 

17 godina
protjeran
offline
Računalstvo-C++

Pa lijepo Osmijeh Inače, ja sam taj Željko Kovačević Smijeh.

Poruka je uređivana zadnji put sub 12.12.2009 21:01 (Tracer).
16 godina
offline
RE: Računalstvo-C++

Ako se već radi sa poljima u praksi, radi se sa dinamičkom alokacijom pa tak svejedno... a pokoji define može bit koristan, aforsiranje definova sada na početku, može dovest do gomilanja istih prilikom izrade nekih naprednijih programa, a onda je takav program puno teže čitat... puno ljepše je napravit jednu varijablu MAX, pa onda nju mijenjat ako dođe do potrebe :D

 

A koliko ja znam, najobičniji sort je baš ovaj koji si napisao, onaj najsporiji, koji sve elemente uspoređuje, bez obzira koliki je posao napravio. Bubble sort je sortiranje kada se gledaju samo susjedni elemnti, njima se zamjenjuje poredak, i to se radi dokle god promjene postoje. Tim promjenama, u jednom prolazu zadnji element dolzi na svoje mjesto i njega se više ne dira. Što bi značilo puno brže vrijeme izvršavanja, manje operacija i svega ostalog.

http://en.wikipedia.org/wiki/Bubble_sort

 

 

17 godina
protjeran
offline
RE: Računalstvo-C++
Luuka kaže...

Ako se već radi sa poljima u praksi, radi se sa dinamičkom alokacijom pa tak svejedno... a pokoji define može bit koristan, aforsiranje definova sada na početku, može dovest do gomilanja istih prilikom izrade nekih naprednijih programa, a onda je takav program puno teže čitat... puno ljepše je napravit jednu varijablu MAX, pa onda nju mijenjat ako dođe do potrebe :D

 

A koliko ja znam, najobičniji sort je baš ovaj koji si napisao, onaj najsporiji, koji sve elemente uspoređuje, bez obzira koliki je posao napravio. Bubble sort je sortiranje kada se gledaju samo susjedni elemnti, njima se zamjenjuje poredak, i to se radi dokle god promjene postoje. Tim promjenama, u jednom prolazu zadnji element dolzi na svoje mjesto i njega se više ne dira. Što bi značilo puno brže vrijeme izvršavanja, manje operacija i svega ostalog.

http://en.wikipedia.org/wiki/Bubble_sort

 

 

Čak i da se radi o poljima s dinamičkom alokacijom opet treba nečime definirati broj elemenata tih polja ;) I koliko god "nagomilao" define-a to se ne može niti približno usporediti s količinom posla koje bi se trebalo odraditi da define-a nema. Štoviše, meni preko define-a program baš i izgleda preglednije. Jasno, neću ga pisati baš za svako polje koje ću kreirati, ali za ona ključna koja se provlače kroz najveće dijelove code-a svakako. A sad, što je tebi ljepše ili ružnije u to neću ulaziti. Ja samo govorim ovo s tehničkog aspekta i primjene.

 

Što se tiče sortiranja -> najobičniji sort ne postoji. Ovaj što sam napisao je bubble sort. On uspoređuje svaki sa svakim na način da onaj veći uvijek postavlja desno. Tako na kraju najveći element uvijek završi na kraju polja. Tada se na isti način sortira ostatak tog polja. Također, onaj citat code-a koji sam kopirao iz tvoje skripte je zapravo Selection sort (nisam pogledao unutrašnju petlju), no svejedno. Evo, pogledaj i ovdje kako izgleda bubble sort:

 

http://www.fredosaurus.com/notes-cpp/algorithms/sorting/bubblesort-fixed.html

 

A i ostali ako žele vidjeti kako točno radi bubble sort mogu pogledati i na simulaciji koju sam osobno napravio:

 

Simulacije (Bubble, Selection)

 

Ono što si ti vidio s while je zapravo tek jedna modificirana verzija tog algoritma koji će upotrebom zastavice (pomoćne varijable) ubrzati sortiranje ukoliko je polje već sortirano. No originalni bubble sort algoritam je onaj gore na linku. I također, najmanji je problem modificirati bubble sort da pri sljedećem sortiranju ostatka polja izuzme sortirane elemente.

 

Umjesto

 

for (i = 0 ; i < n − 1 ; i++)
    for ( j = 0; j < n ; j++)

 

treba samo napisati

 

for (i = 0 ; i < n − 1 ; i++)
    for ( j = 0 ; j < n - i ; j++)

 

Samo se u unutrašnoj petlji pod uvjetnim dijelom doda -i tj. da pri uspoređivanju zanemari do sada sortiranih i elemenata, te to će značiti ono što ti spominješ (manje operacija, brže vrijeme izvršavanja itd..).

 

Poruka je uređivana zadnji put ned 13.12.2009 0:46 (Tracer).
17 godina
neaktivan
offline
Računalstvo-C++

Zanemari.

Poruka je uređivana zadnji put ned 13.12.2009 9:14 (Tom69).
17 godina
offline
RE: Računalstvo-C++
Tracer kaže...

Pa lijepo Osmijeh Inače, ja sam taj Željko Kovačević Smijeh.

Pa, red je da pohvalim knjigu, prije učenja C++ imao sam jedino sa Basic-om iskustva, a sviđa mi se tvoj način izlaganja, mogu skužiti stvari i zadovoljan sam. Nastavi pisatiOsmijeh

17 godina
protjeran
offline
Računalstvo-C++

Hvala ;)

 

Evo i linka na dio teksta koji se priprema za drugo izdanje te knjige:

 

Sadrzaj i klase

17 godina
offline
RE: Računalstvo-C++

ThanksOsmijeh

16 godina
neaktivan
offline
RE: Računalstvo-C++
Tracer kaže...

Pa lijepo Osmijeh Inače, ja sam taj Željko Kovačević Smijeh.

Nema sta majstor programiranja... ;)
:)

Travian ;) ;)
14 godina
neaktivan
offline
Računalstvo-C++

Trebao bi jednu pomoč oko jednog zadatka , kaže zadatak ovako napravi program koji če u dadoteku upisati parne brojeve od 10 do 90.     Iz računalstva radimo dadoteke pa je taj zadatak vezan uz to ... hvala , hitno je ........ 

16 godina
offline
Re: Računalstvo-C++
suco123 kaže...

Trebao bi jednu pomoč oko jednog zadatka , kaže zadatak ovako napravi program koji če u dadoteku upisati parne brojeve od 10 do 90.     Iz računalstva radimo dadoteke pa je taj zadatak vezan uz to ... hvala , hitno je ........ 

Da li znaš kako bi napravio da na ekran ispisuje samo parne brojeve u tom rasponu? Ako znaš, treba ti taj isti kod, samo kaj nećeš ispisivat na cout, nego u datoteku koju prethodno otvoriš.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice