Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Bubble sort

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Bubble sort

[ Pregleda: 3887 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.eunet.yu.



Profil

icon [Zadatak] Bubble sort23.03.2008. u 18:38 - pre 194 meseci
Ovako zamolio bih vas za pomoc oko algoritma.Ceo kod,nema errora ali ocigledno ne izvrsava ono sto sam zamislio.
Odnosno u korisnickoj funkciji Bubble_sort ne uspevam da sortiram niz.
Evo koda:

Code:

/* Primena algoritma bubble sort na niz tabela */
#include<iostream>
#include<cstdlib>
#include<iomanip>

using namespace std;
//Prototip funkcije za uredjivanje niza - algoritam bubble sort
void Bubble_sort(int[],int);

int main()
{
    const int DIM = 5;//Brooj elemenata niza
    int tabela[DIM];//Niz od 5 elemenata
    
    
    //Unos elemenata niza sa tastature
    for(int i=0;i<DIM;i++)
    {
            cout<<endl;
            cout<<"Unesite "<<i+1<<" element niza - ceo broj > ";
            cin >> tabela[i];  
    }
    cout<<endl<<endl;
    cout<<"Uneti elementi niza su:"<<endl;
    cout<<endl;
    //Ispis elemenata niza
    for(int i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];
            
    //Poziv funkcije Bubble_sort
    Bubble_sort(tabela,DIM);
            
    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
//Definisanje funkcije za uredjivanje unetog niza
void Bubble_sort(int niz[],int broj)
{
     bool action;
     do
     {    
          action=false;
              for(int i=0;i<broj-1 ;++i)
              {
                 //Uporedjivanje 2 susedna elementa tabele
                 if(niz[i]>niz[i+1])
                 { //Zamena 2 susedna elementa niza
                     int temp = niz[i];
                     niz[i]=niz[i+1];
                     niz[i+1]=temp;
                     action = true;
                 }   
              }
              broj--;//smanji za jedan velicinu elemenata tabele
              
     }while(action != false);
     
     //Prikaz uredjenog niza
     cout<<endl<<endl;
     cout<<"Uredjeni niz:"<<endl;
     
     for(int i=0;i<broj;i++)
     cout<<setw(3)<<niz[i];
     return;
}


Unapred zahvalan!



 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 19:00 - pre 194 meseci
Gde ti je ispis sortiranog niza? Ispisao si samo pre sortiranja...


Code:

    // ...
    //Ispis elemenata niza
    for(int i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];
            
    //Poziv funkcije Bubble_sort
    Bubble_sort(tabela,DIM);
            
    //Ispis elemenata niza POSLE SORTIRANJA
    for(int i=0;i<DIM;++i)
    cout<<setw(3)<<tabela[i];
    // ...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 19:35 - pre 194 meseci
A ha... sad sam video...

Ti si ispis smestio direktno u Bubble Sort rutinu, sto je nije bilo pametno. A nije dobro ni sa stanovista dizajna. Funkcija treba da je nezavisna od tvog konkretnog zadatka.

Za dimenziju niza pri ispisu si koristio broj iz funkcije, sto nije dobro jer se ovaj menja (broj--).

Dakle, izbaci ispis iz funkcije, i premesti ga odmah nakon poziva funkcije gde se koristi DIM, koji je konstanta.

Code:

/* Primena algoritma bubble sort na niz tabela */
#include<iostream>
#include<cstdlib>
#include<iomanip>

using namespace std;
//Prototip funkcije za uredjivanje niza - algoritam bubble sort
void Bubble_sort(int[],int);

int main()
{
    const int DIM = 5;//Brooj elemenata niza
    int tabela[DIM];//Niz od 5 elemenata
    
    
    //Unos elemenata niza sa tastature
    for(int i=0;i<DIM;i++)
    {
            cout<<endl;
            cout<<"Unesite "<<i+1<<" element niza - ceo broj > ";
            cin >> tabela[i];  
    }
    cout<<endl<<endl;
    cout<<"Uneti elementi niza su:"<<endl;
    cout<<endl;

    //Ispis elemenata niza
    for(int i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];

    //Poziv funkcije Bubble_sort
    Bubble_sort(tabela,DIM);

    cout<<endl;

    //Ispis elemenata niza
    for(int i=0;i<DIM;++i)
        cout<<setw(3)<<tabela[i];


    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
//Definisanje funkcije za uredjivanje unetog niza
void Bubble_sort(int niz[],int broj)
{
     bool action;
     do
     {
        action=false;
        for(int i=0;i<broj-1 ;++i)
        {
           //Uporedjivanje 2 susedna elementa tabele
           if(niz[i]>niz[i+1])
           { //Zamena 2 susedna elementa niza
              int temp = niz[i];
              niz[i]=niz[i+1];
              niz[i+1]=temp;
              action = true;
           }
         }
         broj--;//smanji za jedan velicinu elemenata tabele

     }while(action != false);

 return;
}
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.eunet.yu.



Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 20:24 - pre 194 meseci
Hvala na brzom odgovoru.To sam zapravo i uradio,ali mi nakon toga VS C++ 6.0 prijavljuje gresku.
Zaista mi nije jasno zasto prijavljuje gresku kod for ciklusa,odnosno prilikom definisanja promenljive int i ???
Compiler prijavljuje,da imam vise promenljivih sa istim nazivom.

Ja koliko se secam,po standardu ukoliko se definise podatak u uslovnom delu for petlje,promenljiva vazi samo do kraja iteracije (dok je pre standarda vazilo da tako definisan podatak vazi do kraja bloka u kome je ta petlja ugnezdjena).
Molim vas za pomoc?

Evo sta mi prijavljuje compiler:

Compiling...
bubblesort.cpp
C:\Documents and Settings\Ivan\Desktop\Vezba C++\Bubble\bubblesort.cpp(27) : error C2374: 'i' : redefinition; multiple initialization
C:\Documents and Settings\Ivan\Desktop\Vezba C++\Bubble\bubblesort.cpp(17) : see declaration of 'i'
C:\Documents and Settings\Ivan\Desktop\Vezba C++\Bubble\bubblesort.cpp(34) : error C2374: 'i' : redefinition; multiple initialization
C:\Documents and Settings\Ivan\Desktop\Vezba C++\Bubble\bubblesort.cpp(17) : see declaration of 'i'
Error executing cl.exe.

bubblesort.obj - 2 error(s), 0 warning(s)

Evo postavicu jos jednom kod(izbaceno je ispisivanje uredjenog niza iz funkcije Bubble_sort).

Code:

/* Primena algoritma bubble sort na niz tabela */
#include<iostream>
#include<cstdlib>
#include<iomanip>

using namespace std;
//Prototip funkcije za uredjivanje niza - algoritam bubble sort
void Bubble_sort(int[],int);

int main()
{
    const int DIM = 5;//Broj elemenata niza
    int tabela[DIM];//Niz od 5 elemenata
    
    
    //Unos elemenata niza sa tastature
    for(int i=0;i<DIM;i++)
    {
            cout<<endl;
            cout<<"Unesite "<<i+1<<" element niza - ceo broj > ";
            cin >> tabela[i];  
    }
    cout<<endl<<endl;
    cout<<"Uneti elementi niza su:"<<endl;
    cout<<endl;
    //Ispis elemenata niza
    for(int i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];
            
    //Poziv funkcije Bubble_sort
    Bubble_sort(tabela,DIM);

    //Prikazi elemente niza POSLE SORTIRANJA
    for(int i=0;i<DIM;i++)
        cout<<setw(2)<<tabela[i];
            
    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
//Definisanje funkcije za uredjivanje unetog niza
void Bubble_sort(int niz[],int broj)
{
     bool action;
     do
     {    
          action=false;
              for(int i=0;i<broj-1 ;++i)
              {
                 //Uporedjivanje 2 susedna elementa tabele
                 if(niz[i]>niz[i+1])
                 { //Zamena 2 susedna elementa niza
                     int temp = niz[i];
                     niz[i]=niz[i+1];
                     niz[i+1]=temp;
                     action = true;
                 }   
              }
              broj--;//smanji za jedan velicinu elemenata tabele
              
     }while(action != false);
     return;
}
                                     
                                
          
     



 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
*.PPPoE-791.sa.bih.net.ba.



Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 21:05 - pre 194 meseci
Testirao sam i sve radi bez problema evo izlaz programa:

Citat:

Unesite 1 element niza - ceo broj > 1
Unesite 2 element niza - ceo broj > 2
Unesite 3 element niza - ceo broj > 3
Unesite 4 element niza - ceo broj > 6
Unesite 5 element niza - ceo broj > 5

Uneti elementi niza su:

1 2 3 6 5
sortirano:
1 2 3 5 6
Press any key to continue . . .

if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

Fidelito_Castro
Fidelito_Castro
Subotica

Član broj: 143557
Poruke: 87
*.eunet.yu.



Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 21:11 - pre 194 meseci
Zanimljivo!
Meni prijavljuje gresku???
Evo i slike:
Prikačeni fajlovi
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: [Zadatak] Bubble sort23.03.2008. u 22:19 - pre 194 meseci
Koristis stari, arhaicni kompajler za koji se pricalo da je u svoje vreme bio kompajler koji je najmanje sledio ISO C++ (a i mislim da tada blok vazenja promenljive nije bio definisan standardom, mada, verovatno gresim).

No, ako hoces da izbegnes gresku bez prelaska na neku noviju verziju MSVC++ kompajlera izmeni ovo:


Code:
    //Prikazi elemente niza POSLE SORTIRANJA
    for(int i=0;i<DIM;i++)
        cout<<setw(2)<<tabela[i];


u ovo:

Code:
    //Prikazi elemente niza POSLE SORTIRANJA
    for(i=0;i<DIM;i++)
        cout<<setw(2)<<tabela[i];


i ovo:

Code:
//Ispis elemenata niza
    for(int i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];


u ovo:

Code:
//Ispis elemenata niza
    for(i=0;i<DIM;++i)
            cout<<setw(3)<<tabela[i];

 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Bubble sort

[ Pregleda: 3887 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.