Do rzeczy, czyli jak posortować tablicę liczb lub znaków bez znajomości ani jednego algorytmu sortowania:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int i;
string lancuch = "string do posortowania abzwcdexyfh";
string tab_string[] = {"test","bB","A","D","1A","a","ds","asd","Bb","z"};
int tab_int[] = {2,4,6,3,8,6,88,1,5,84,62};
/*-------- Sortowanie tablicy z liczbami ------*/
int elementow = sizeof(tab_int)/sizeof(tab_int[0]);
cout <<"Posortowana malejaco: ";
sort(tab_int,tab_int+elementow,greater<int>()); //sortuje od najmniejszego do najwiekszego 1*
for (i=0; i<elementow; i++)
{
cout << " "<< tab_int[i] ;
}
cout << endl<<"Posortowana rosnaco: ";
sort(tab_int,tab_int+elementow); //sortuje od najwiekszego do najmniejszego 2*
for (i=0; i<elementow; i++)
{
cout << " "<< tab_int[i] ;
}
/*-------- Sortowanie tablicy stringow ------*/
elementow = sizeof(tab_string)/sizeof(tab_string[0]);
cout << endl<<"Posortowana rosnaco: ";
sort(tab_string,tab_string+elementow); //sortuje od najwiekszego do najmniejszego
for (i=0; i<elementow; i++)
{
cout << " "<< tab_string[i] ;
}
cout << endl<<"Posortowana malejaco: ";
sort(tab_string,tab_string+elementow,greater <string>());
for (i=0; i<elementow; i++)
{
cout << " "<< tab_string[i] ;
}
/*-------- Zmiana wielkosci liter ---------*/
cout<< "\nzamiana na duze litery";
for (i=0; i<elementow; i++)
{
transform(tab_string[i].begin(),tab_string[i].end(),tab_string[i].begin(),::toupper); //albo ::tolower 3*
}
cout << endl<<"Posortowana malejaco: ";
sort(tab_string,tab_string+elementow,greater <string>());
for (i=0; i<elementow; i++)
{
cout << " "<< tab_string[i] ;
}
cout << endl<<"Posortowana rosnaco: ";
sort(tab_string,tab_string+elementow); //sortuje od najwiekszego do najmniejszego
for (i=0; i<elementow; i++)
{
cout << " "<< tab_string[i] ;
}
cout<< "\nSortowanie wyrazow:";
cout << endl<<"Posortowany rosnaco: ";
sort(lancuch.begin(),lancuch.end());
cout <<lancuch<<endl;
cout << endl<<"Posortowany malejaco: ";
sort(lancuch.begin(),lancuch.end(),greater <char>());
cout <<lancuch<<endl;
return 0;
}
Wynikiem tego kodu jest coś takiego:
Posortowana malejaco: 88 84 62 8 6 6 5 4 3 2 1
Posortowana rosnaco: 1 2 3 4 5 6 6 8 62 84 88
Posortowana rosnaco: 1A A Bb D a asd bB ds test z
Posortowana malejaco: z test ds bB asd a D Bb A 1A
zamiana na duze litery
Posortowana malejaco: Z TEST DS D BB BB ASD A A 1A
Posortowana rosnaco: 1A A A ASD BB BB D DS TEST Z
Sortowanie wyrazow:
Posortowana rosnaco: aaabcddefghiinnooooprrssttwwxyz
Posortowana malejaco: zyxwwttssrrpoooonniihgfeddcbaaa
Jak już z pewnością zauważyłeś po tym jak wnikliwie zanalizowałeś kod i wynik to funkcją sortującą z biblioteki algorithm jest sort a wykorzystuje się ją tak:
sort(pierwszy_element, ostatni_element, opcja);
opcja czyli w jaki sposób posortować zostawienie tylko dwóch pierwszych argumentów powoduje posortowanie od najwiekszego do najmniejszego elementu(1*) a z opcją
greater <typ_zmiennej>() sortuje od najmniejszego do największego elementu (2*)
Zauważamy również że funkcja sort sortuje znaki według numerów z tablicy znaków ASCII gdzie A ma numer 65, B 66, a mała litera: a 97. Dlatego może być nam potrzebna funkcja zamieniająca małe litery na duże (lub na odwrót). Funkcja ta to transform przykład jej użycia jest w wierszu 52 (3*)
Kolejną ciekawą funkcją jest partial_sort która pozwala nam posortować wybrany przez nas zakres.
przykład użycia:
string lancuch = "987654321"; partial_sort (lancuch.begin(), lancuch.begin()+5, lancuch.end()); cout << lancuch;
wynikiem będzie: 123459876
I. WIADOMOŚCI I ROZUMIENIE
Zdający zna i rozumie podstawowe pojęcia, metody, narzędzia i procesy
związane z informatyką i technologią informacyjną:
POZIOM PODSTAWOWY:
1) opisuje środki, narzędzia i metody informatyki posługując się poprawną
terminologią informatyczną
2) zna rolę, funkcje i zasady pracy sprzętu komputerowego
3) charakteryzuje typowe narzędzia informatyczne i ich zastosowania
4) zna podstawową terminologię związaną z sieciami komputerowymi:
rodzaje sieci, protokoły, opisuje podstawowe usługi sieciowe
i sposoby ochrony zasobów
5) omawia przydatność i wiarygodność różnych źródeł i zbiorów informacji oraz
użyteczność sposobów i form ich reprezentowania
6) zna sposoby reprezentowania informacji w komputerze
7) zna podstawowe algorytmy i techniki algorytmiczne:
a) algorytmy badające własności liczb całkowitych i naturalnych
b) algorytmy wyszukiwania i porządkowania (sortowania)
c) algorytmy na tekstach
d) proste algorytmy szyfrowania
e) metoda dziel i zwyciężaj
f) iteracja i rekurencja
8) zna zasady programowania strukturalnego
9) zna podstawowe własności algorytmów
10) zna podstawowe pojęcia związane z relacyjnymi bazami danych
11) zna i opisuje zasady etyczne i prawne związane z wykorzystywaniem
informacji i oprogramowania
POZIOM ROZSZERZONY:
Jak na poziomie podstawowym oraz
1) zna i opisuje zasady administrowania siecią komputerową
2) charakteryzuje sposoby reprezentowania informacji w komputerze
3) zna systemy liczbowe mające zastosowanie w informatyce
4) zna techniki algorytmiczne i algorytmy:
a) dziel i zwyciężaj
b) metoda zachłanna
c) iteracja i rekurencja
d) badające własności liczb całkowitych
e) wyszukiwania i porządkowania (sortowania)
f) schemat Hornera
g) algorytmy na tekstach
h) algorytmy numeryczne
i) algorytmy kompresji
5) zna wybrane struktury danych i ich realizację
6) zna zasady programowania obiektowego
II. KORZYSTANIE Z INFORMACJI
Zdający stosuje posiadaną wiedzę do rozwiązywania zadań teoretycznych i praktycznych:
POZIOM PODSTAWOWY:
1) posługuje się typowymi programami użytkowymi
2) wykorzystuje wybrane środowisko programistyczne do zapisywania,
uruchamiania i testowania programu
3) korzysta z zasobów i usług sieci komputerowych
4) stosuje metody wyszukiwania i przetwarzania informacji w relacyjnych
bazach danych
5) stosuje podstawowe algorytmy i struktury danych w rozwiązywaniu
problemów informatycznych
6) dobiera właściwy program (użytkowy lub własnoręcznie napisany)
do rozwiązywanego zadania
7) wykorzystuje zdobytą wiedzę i umiejętności do rozwiązywania zadań
z różnych dziedzin nauczania i problemów z życia codziennego
POZIOM ROZSZERZONY:
Jak na poziomie podstawowym oraz
1) stosuje metody wyszukiwania i przetwarzania informacji w relacyjnych
bazach danych z wykorzystaniem różnych technik i narzędzi
2) stosuje kolejne etapy prowadzące do otrzymania poprawnego rozwiązania
problemu: od sformułowania specyfikacji problemu po testowanie rozwiązania
3) stosuje narzędzia i techniki informatyczne do modelowania i symulacji
procesów oraz zjawisk
III. TWORZENIE INFORMACJI
Zdający stosuje metody informatyczne do rozwiązywania problemów:
POZIOM PODSTAWOWY:
1) tworzy specyfikację problemu, proponuje i analizuje jego rozwiązanie
2) formułuje informatyczne rozwiązanie problemu przez dobór
algorytmu oraz odpowiednich struktur danych i realizuje je w wybranym
języku programowania
3) projektuje relacyjne bazy danych i wykorzystuje do ich realizacji
system bazy danych
4) wykorzystuje różnorodne źródła i zasoby informacji do tworzenia
dokumentów tekstowych i multimedialnych
POZIOM ROZSZERZONY:
Jak na poziomie podstawowym oraz
1) projektuje i przeprowadza wszystkie etapy na drodze do otrzymania
informatycznego rozwiązania problemu
2) wykorzystuje metody informatyki w rozwiązywaniu problemów
3) uzasadnia poprawność, złożoność i efektywność rozwiązania problemu
4) projektuje relacyjne bazy danych i proste aplikacje bazodanowe
5) tworzy dokumenty sieciowe i multimedialne z użyciem zaawansowanych
technik, w tym programowania
6) opisuje nowe zastosowania narzędzi informatyki i antycypuje
ich konsekwencje dla życia społecznego,
gospodarczego (korzyści i zagrożenia)