Nadesłany przez Krzysztof Kranc, 02 listopada 2012 13:41
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
bubblesort.cpp:
/*
Sortowanie liczb calkowitych metoda babelkowa
Program zostal pobrany ze strony www.algorytm.org
Opracowal Krzysztof Kranc
*/
#include <iostream>
using namespace std;
//tablica do posortowania oraz jej wielkosc
int wielkoscTablicy = 0;
int *tablica = new int [0];
//ustawia wielkosc tablicy do posortowania
void setWielkoscTablicy(int x)
{
wielkoscTablicy = x;
tablica = new int [wielkoscTablicy];
}
//pobiera wielkosc tablicy do posortowania
int getWielkoscTablicy()
{
return wielkoscTablicy;
}
//wypelnienie tablicy wartosciami pobranymi od uzytkownika
void wypelnianieTablicy()
{
for(int i = 0; i < wielkoscTablicy; i++)
{
cout << "Podaj " << i+1 << " element.\n";
cin >> tablica[i];
if(cin.fail())
{
i--;
cout << "Wprowadz poprawna wartosc! \n";
cin.clear();
cin.sync();
}
}
}
//algorytm sortowania babelkowego
void sortowanieBabelkowe()
{
int zmiana , licznik, tymczasowa;
if(wielkoscTablicy <= 1)
{
cout << "Podaj wiekszy zakres liczb!";
}
else
{
do
{
licznik = wielkoscTablicy-1;
zmiana = 0;
do
{
licznik--;
if(tablica[licznik] > tablica[licznik+1]) //jezeli elementy sa w zlym porzadku
{
//zamien je miejscami
tymczasowa = tablica[licznik+1];
tablica[licznik+1] = tablica[licznik];
tablica[licznik] = tymczasowa;
zmiana=1;
}
}
while(licznik!=0); //dla wszystkich par w tablicy
}
while(zmiana!=0); //dopoki wykryto ze tablica jest nieposortowana
//wypisz wynik
for(int i = 0; i < wielkoscTablicy; i++)
{
cout << tablica[i] << " , ";
}
}
}
//glowne wejscie do programu
int main()
{
int x;
char warunek = 'n';
do
{
cout << "Podaj ilosc elementow do posegregowania \n";
cin >> x;
if(cin.good())
{
setWielkoscTablicy(x);
}
else
{
cout << "Wprowadz poprawna wartosc! \n";
cin.clear();
cin.sync();
}
wypelnianieTablicy();
sortowanieBabelkowe();
cout << " \n" << "Wcisnij t, aby zakonczyc! \n";
cin >> warunek;
if(cin.fail())
{
cin.clear();
cin.sync();
}
}
while(warunek!='t');
cout << "Wykonanie programu : Krzysztof Kranc";
return 0;
}

