Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #include <stdlib.h>
- /*Napisz funkcję, która wykorzystując sortowanie przez wybieranie posortuje tablicę typu char rosnąco (zgodnie z
- * wartościami kodów ASCII). Funkcja jako argumenty wejściowe przyjmuje tablicę oraz jej rozmiar.
- W funkcji main() proszę stworzyć tablicę o rozmiarze 30. Elementy tablicy są wprowadzane przez użytkownika BEZ
- poprzedzającego komunikatu. Program w funkcji main() wyświetla TYLKO elementy posortowanej tablicy oddzielone spacją.
- Napisz funkcję, która przyjmuje jako argumenty wejściowe dwuwymiarową tablicę typu int oraz jej rozmiary. Zadaniem
- funkcji jest posortowanie rosnąco tablicy będącej argumentem wejściowym funkcji. W funkcji main() proszę zdefiniować
- liczbę wierszy oraz kolumn tablicy odpowiednio jako 4 i 5 oraz stworzyć tablicę, której elementy są wprowadzanie przez
- użytkownika BEZ poprzedzającego komunikatu. Zapełniane są wszystkie miejsca w tablicy. Tablicę wypełniamy wierszami
- tj. dopiero po wypełnieniu wszystkich miejsc w pierwszym wierszu przechodzimy do wypełnienia kolejnego wiersza. W
- funkcji main() program wyświetla TYLKO wynik działania funkcji czyli posortowaną tablicę dwuwymiarową, której elementy
- są oddzielone spacją. Tablica ma być wyświetlana wierszami. Uwaga: przepisywanie tablicy dwuwymiarowej do tablicy
- jednowymiarowej jest zabronione.
- Napisz funkcję, która przyjmuje jako argumenty wejściowe jednowymiarową tablicę typu int oraz jej rozmiar.
- Zadaniem funkcji jest posortowanie malejąco tablicy metodą sortowania koktajlowego. Dodatkowo należy napisać
- funkcję, która przyjmuje jako argument jednowymiarową tablicę typu int oraz jej rozmiar. Funkcja ta wyświetla
- elementy tablicy oddzielone spacją. Funkcja wyświetlająca tablicę jest wywoływana w funkcji sortującej w każdej
- iteracji pętli zewnętrznej na końcu jej działania. W funkcji main() proszę zdefiniować rozmiar tablicy równy 10 oraz
- stworzyć tablicę, której elementy są wprowadzane przez użytkownika BEZ poprzedzającego komunikatu. Po wprowadzeniu
- elementów do tablicy, tablica jest sortowana przy użyciu wyżej opisanych funkcji.*/
- int displayShaker1(int array[], int size){
- for (int i = 0; i < size-1; i++){
- cout << array[i] << " ";
- }
- cout << array[size-1];
- }
- int compare(const void* lhs, const void* rhs) {
- int left = *(const int*)lhs;
- int right = *(const int*)rhs;
- if (left < right) {
- return -1;
- }
- else if (left > right) {
- return 1;
- }
- return 0;
- }
- int displayShaker2(int array[], int size){
- for (int i = 0; i < (size-1); i++){
- cout << array[i] << " ";
- }
- cout << array[size - 1];
- }
- void swap(int *a, int *b){
- int temp;
- temp = *a;
- *a = *b;
- *b = temp;
- }
- // A function implementing shaker sort.
- void ShakerSort(int a[], int n){
- int i, j, k;
- for(i = 0; i < n;){
- // First phase for ascending highest value to the highest unsorted index.
- for(j = i+1; j < n; j++) {
- if(a[j] > a[j-1])
- swap(&a[j], &a[j-1]);
- }
- // Decrementing highest index.
- n--;
- // Second phase for descending lowest value to the lowest unsorted index.
- for(k = n-1; k > i; k--) {
- if(a[k] > a[k-1])
- swap(&a[k], &a[k-1]);
- }
- // Incrementing lowest index.
- i++;
- if(i > 0) cout << " ";
- displayShaker1(a, n);
- }
- }
- char insertionSort(char array[], int size){
- int i, j;
- char key;
- for (i = 1; i < size; i++)
- {
- key = array[i];
- j = i - 1;
- while (j >= 0 && array[j] > key)
- {
- array[j + 1] = array[j];
- j = j - 1;
- }
- array[j + 1] = key;
- }
- }
- int main() {
- int variable;
- cin >> variable;
- switch(variable){
- case 1:{
- const int size = 30;
- char array[size];
- for(int i = 0; i < size; i++){
- cin >> array[i];
- }
- insertionSort(array, size);
- for(int i = 0; i < size - 1; i++) {
- cout << array[i]<< " ";
- }
- cout << array[29];
- break;
- }
- case 2:{
- const int size1 = 4;
- const int size2 = 5;
- int array[size1][size2];
- for (int i = 0; i < size1; i++) {
- for (int j = 0; j < size2; j++)
- cin >> array[i][j];
- }
- size_t elementSize = sizeof(array[0][0]);
- size_t arraySize = sizeof(array) / elementSize;
- qsort(&array[0][0], arraySize, elementSize, &compare);
- for (int i = 0; i < size1; ++i) {
- for (int j = 0; j < size2; ++j) {
- cout<<array[i][j]<<" ";
- }
- }
- break;
- }
- case 3:{
- const int size = 10;
- int array[size];
- for(int i = 0; i < 10; i++){
- cin >> array[i];
- }
- ShakerSort(array, size);
- /*for(int i = 0; i < 10; i++){
- cout << array[i];
- }*/
- break;
- }
- default: cout << "Wrong input.";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement