Witam, napisałem dwa programy na:
-
Sortowanie przez wybieranie:
// Sortowanie przez wybieranie
#include
using namespace std;
bool wprowadzenie_danych(int &ilosc_elementow, int tablica[]);
int sortowanie_wybieranie(int tablica[], int n);
int najmniejszy(int tablica[], int n, int start);
void wypisz_rezultat(int tablica[], int n, int zamiany);
void wynik_czastkowy(int tablica[], int n, int od, int dokad);
int main()
{
int tablica[100]={0},n,ile_zamian; if(wprowadzenie_danych(n, tablica)) // jezeli wprowadzono poprawne dane { ile_zamian=sortowanie_wybieranie(tablica,n); // to sortujemy wypisz_rezultat(tablica,n,ile_zamian); // i wypisujemy posortowana tablice } return 0;
}
// ***********************************************************************************
// funkcja do wprowadzania danych:
// ***********************************************************************************
bool wprowadzenie_danych(int &ilosc_elementow, int tablica[])
{
cout << "Sortowanie przez wybieranie\n\nPodaj ilosc elementow: "; cin >> ilosc_elementow; if((ilosc_elementow<1) || (ilosc_elementow>100)) // sprawdzenie poprawnosci danych { cout << "Zla ilosc elementow!" << endl; return false; } cout << endl; for (int i=0; i { cout << "Podaj " << i+1 << " element tablicy: "; cin >> tablica[i]; } return true;
}
// *************************************************************************************
// funkcja do wyszukiwania najmniejszego elementu tablicy zaczynajac od elementu start:
// *************************************************************************************
int najmniejszy(int tablica[], int n, int start)
{
int minimum=tablica[start], indeks_minimum=start; // na poczatku zakladamy ze minimalny to pierwszy element for(int j=start+1; j { if(tablica[j] { minimum=tablica[j]; // jest minimum indeks_minimum=j; // i jego indeks ktory zwracamy do funkcji sortujacej } } return indeks_minimum;
}
// ****************************************
// wlasciwa funkcja sortujaca:
// ****************************************
int sortowanie_wybieranie(int tablica[], int n)
{
int temp,licznik_zamian=0; for(int k=0; k { int indeks_najmniejszego=najmniejszy(tablica,n,k); // szukamy najmniejszego elementu w dalszej czesci tablicy if(tablica[k]>tablica[indeks_najmniejszego]) // jezeli biezacy element tablicy jest wiekszy od minimalnego { temp=tablica[k]; // tablica[k]=tablica[indeks_najmniejszego]; // zamiana tablica[indeks_najmniejszego]=temp; // wynik_czastkowy(tablica, n, temp, k); // wypisujemy czastkowe wyniki licznik_zamian++; } } return licznik_zamian;
}
// *********************************************************
// wypisanie stanu tablicy po kazdym kroku sortowania:
// *********************************************************
void wynik_czastkowy(int tablica[], int n, int od, int dokad)
{
static int licznik_krokow=0; if(!licznik_krokow) { cout << "\n"; } cout << "Krok " << licznik_krokow+1 << ": ["; licznik_krokow++; for(int m=0; m { cout << tablica[m]; if(m else cout << "] Zamiana " << od << " ---> " << tablica[dokad] << endl; }
}
// **********************************************
// wypisanie na ekran posortowanej tablicy:
// **********************************************
void wypisz_rezultat(int tablica[], int n, int zamiany)
{
cout << endl << " Posortowana tablica: ["; for(int m=0; m { cout << tablica[m]; if(m else cout << "]" << endl; } cout << " Ilosc zamian: " << zamiany << endl;
}
oraz: 2. Sortowanie przez wstawianie:
// Sortowanie przez wstawianie
#include
using namespace std;
int sortowanie_wstawianie(int tablica[], int ilosc_elementow);
bool wprowadzenie_danych(int tablica[], int &n);
void pokaz_wyniki(int tablica[], int n, int ile_zamian);
void czastkowe_wyniki(int tablica[], int n, int od, int dokad);
double mediana(int tablica[], int n);
int main()
{
int n,tablica[100]={0},ile_zamian;
if(wprowadzenie_danych(tablica,n))
{
ile_zamian=sortowanie_wstawianie(tablica,n);
pokaz_wyniki(tablica,n,ile_zamian);
}
return 0;
}
// ***********************************************************
// funkcja sortujaca:
// ***********************************************************
int sortowanie_wstawianie(int tablica[], int ilosc_elementow)
{
int temp, licznik_zamian=0; // zmienna pomocnicza do zamiany i licznik zamian
for(int j=1; j
{
for(int k=0; k
{
if(tablica[j]
{
temp=tablica[j]; //
tablica[j]=tablica[k]; // zamiana
tablica[k]=temp; //
licznik_zamian++;
czastkowe_wyniki(tablica,ilosc_elementow,j,k);
}
}
}
return licznik_zamian;
}
// *************************************************
// wprowadzenie danych:
// *************************************************
bool wprowadzenie_danych(int tablica[], int &n)
{
cout << "Sortowanie przez wstawianie\n\nPodaj ilosc elementow: ";
cin >> n;
if((n<1) || (n>100)) // dbamy o nieprzekroczenie zakresu tablicy
{
cout << "Zla liczba elementow!\n";
return false;
}
for(int i=0; i
{
cout << "Podaj element nr " << i+1 << ": ";
cin >> tablica[i];
}
return true;
}
// *******************************************
// pokazanie posortowanej tablicy:
// *******************************************
void pokaz_wyniki(int tablica[], int n, int ile_zamian)
{
cout << "\n Posortowana tablica:\n [";
for(int i=0; i
{
cout << tablica[i];
if(i
else cout << "]\n";
}
cout << " Ilosc zamian: " << ile_zamian << "\n";
cout << " Mediana wynosi: " << mediana(tablica,n) << "\n";
}
// *****************************************************
// pokazywanie czastkowych wynikow po kazdej zamianie:
// *****************************************************
void czastkowe_wyniki(int tablica[], int n, int od, int dokad)
{
static int krok;
if(!krok) cout << endl;
cout << " Krok nr " << krok+1 << ": [";
krok++;
for(int i=0; i
{
cout << tablica[i];
if(i
else cout << "] zamiana: " << tablica[od] << " z " << tablica[dokad] << "\n";
}
}
// **************************************************
// wyliczenie mediany:
// **************************************************
double mediana(int tablica[], int n)
{
if(!(n%2)) // dla parzystej liczby elementow
return (tablica[(n/2)-1]+tablica[n/2])/2.;
return tablica[n/2]; // dla nieparzystej liczby elementow
}
Będę wdzięczny za wszelkie uwagi, spostrzeżenia i porady, które pomogą mi być lepszym programistą.
Pozdrawiam.