materiały dla uczniów ...

 

Opis programu

  • Program ilustruje działanie algorytmu sortowania przez zliczanie.
  • Algorytm opisany w podręczniku w punkcie 6 na stronie 74.
  • Wersja "PODRĘCZNIKOWA" opisana w podręczniku na stronach 101-102.

Kod programu:


#include <iostream>
using namespace std;

const int N = 10; //ilość liczb do posortowania
const int MAX_DANA = 20; //każda liczba do posortowania mieści się w zakresie od 0 do 99

int liczby[N]; //tablica dla liczb do posortowania (w podręczniku nazywa się a[N])

// funkcja wprowadzająca do programu liczby do posortowania
void wprowadzDane()
{
	int i;
	cout << "\nSortowanie przez zliczania - wersja podrecznikowa, str 101-102\n";
	cout << "\nIlosc liczb do posortowania: " << N;
	cout << "\nLiczby do posortowania musza byc w przedziale od 0 do " << MAX_DANA << "\n";
	// pętla wprowadzająca liczby do posortowania
	for (i = 0; i < N; i++)
	{
		cout << "podaj liczbe nr " << i << " (z przedzialu od 0 do " << MAX_DANA << " ): ";
		cin >> liczby[i];
		//jeśli podano liczbę ujemną, to wstawi się 0
		if (liczby[i] < 0) liczby[i] = 0; 
		//jeśli podano liczbę większą od maksymalnej, to wstawi się ta maksymalna
		if (liczby[i] > MAX_DANA) liczby[i] = MAX_DANA; 
	}
}

//funkcja sortująca
void sortZlicz()
{
	//tablica liczników poszczególnych liczb
	int licznik[MAX_DANA + 1] = {}; //na początku wszędzie jest 0
	int i, j;	
	//w pętli zwiększamy licznik wystąpień każdej liczby
	for (i = 0; i < N; i++) licznik[liczby[i]]++;
	int poz = 0;
	//układanie liczb zgodnie z kolejnością i ilością powtórzeń
	for (i = 0; i <= MAX_DANA; i++)
	{
		for (j = 0; j < licznik[i]; j++) liczby[poz++] = i;
	}
}
// funkcja wyświetlająca wyniki
void wyprowadzDane(){
	cout << "\n\nLiczby posortowane rosnaco algorytmem \"przez zliczanie\"\n";
	for (int i = 0; i < N; i++) cout << liczby[i] << " ";
}

int main() {
	wprowadzDane();
	sortZlicz();
	wyprowadzDane();
	return 0;
}

Użycie kodu:

  • Powyższy kod można wykorzystać w środowiski Dev C++. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
  • Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh