Advertisement
Guest User

Untitled

a guest
May 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.42 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #include <stdlib.h>
  4.  
  5. /*Napisz funkcję, która wykorzystując sortowanie przez wybieranie posortuje tablicę typu char rosnąco (zgodnie z
  6.  * wartościami kodów ASCII). Funkcja jako argumenty wejściowe przyjmuje tablicę oraz jej rozmiar.
  7. W funkcji main() proszę stworzyć tablicę o rozmiarze 30. Elementy tablicy są wprowadzane przez użytkownika BEZ
  8.  poprzedzającego komunikatu. Program w funkcji main() wyświetla TYLKO elementy posortowanej tablicy oddzielone spacją.
  9.  
  10. Napisz funkcję, która przyjmuje jako argumenty wejściowe dwuwymiarową tablicę typu int oraz jej rozmiary. Zadaniem
  11.  funkcji jest posortowanie rosnąco tablicy będącej argumentem wejściowym funkcji. W funkcji main() proszę zdefiniować
  12.  liczbę wierszy oraz kolumn tablicy odpowiednio jako 4 i 5 oraz stworzyć tablicę, której elementy są wprowadzanie przez
  13.  użytkownika BEZ poprzedzającego komunikatu. Zapełniane są wszystkie miejsca w tablicy. Tablicę wypełniamy wierszami
  14.  tj. dopiero po wypełnieniu wszystkich miejsc w pierwszym wierszu przechodzimy do wypełnienia kolejnego wiersza. W
  15.  funkcji main() program wyświetla TYLKO wynik działania funkcji czyli posortowaną tablicę dwuwymiarową, której elementy
  16.  są oddzielone spacją. Tablica ma być wyświetlana wierszami. Uwaga: przepisywanie tablicy dwuwymiarowej do tablicy
  17.  jednowymiarowej jest zabronione.
  18.  
  19. Napisz funkcję, która przyjmuje jako argumenty wejściowe jednowymiarową tablicę typu int oraz jej rozmiar.
  20.  Zadaniem funkcji jest posortowanie malejąco tablicy metodą sortowania koktajlowego. Dodatkowo należy napisać
  21.  funkcję, która przyjmuje jako argument jednowymiarową tablicę typu int oraz jej rozmiar. Funkcja ta wyświetla
  22.  elementy tablicy oddzielone spacją. Funkcja wyświetlająca tablicę jest wywoływana w funkcji sortującej w każdej
  23.  iteracji pętli zewnętrznej na końcu jej działania. W funkcji main() proszę zdefiniować rozmiar tablicy równy 10 oraz
  24.  stworzyć tablicę, której elementy są wprowadzane przez użytkownika BEZ poprzedzającego komunikatu. Po wprowadzeniu
  25.  elementów do tablicy, tablica jest sortowana przy użyciu wyżej opisanych funkcji.*/
  26.  
  27. int displayShaker1(int array[], int size){
  28.     for (int i = 0; i < size-1; i++){
  29.         cout << array[i] << " ";
  30.     }
  31.     cout << array[size-1];
  32. }
  33.  
  34. int compare(const void* lhs, const void* rhs) {
  35.  
  36.     int left = *(const int*)lhs;
  37.     int right = *(const int*)rhs;
  38.  
  39.     if (left < right) {
  40.         return -1;
  41.     }
  42.     else if (left > right) {
  43.         return 1;
  44.     }
  45.  
  46.     return 0;
  47.  
  48. }
  49.  
  50. int displayShaker2(int array[], int size){
  51.     for (int i = 0; i < (size-1); i++){
  52.         cout << array[i] << " ";
  53.     }
  54.     cout << array[size - 1];
  55. }
  56.  
  57.  
  58. void swap(int *a, int *b){
  59.     int temp;
  60.     temp = *a;
  61.     *a = *b;
  62.     *b = temp;
  63. }
  64.  
  65. // A function implementing shaker sort.
  66. void ShakerSort(int a[], int n){
  67.     int i, j, k;
  68.     for(i = 0; i < n;){
  69.         // First phase for ascending highest value to the highest unsorted index.
  70.         for(j = i+1; j < n; j++) {
  71.             if(a[j] > a[j-1])
  72.                 swap(&a[j], &a[j-1]);
  73.         }
  74.         // Decrementing highest index.
  75.         n--;
  76.  
  77.         // Second phase for descending lowest value to the lowest unsorted index.
  78.         for(k = n-1; k > i; k--) {
  79.             if(a[k] > a[k-1])
  80.                 swap(&a[k], &a[k-1]);
  81.         }
  82.         // Incrementing lowest index.
  83.         i++;
  84.  
  85.         if(i > 0) cout << " ";
  86.         displayShaker1(a, n);
  87.  
  88.     }
  89. }
  90.  
  91. char insertionSort(char array[], int size){
  92.         int i, j;
  93.         char key;
  94.         for (i = 1; i < size; i++)
  95.         {
  96.             key = array[i];
  97.             j = i - 1;
  98.  
  99.             while (j >= 0 && array[j] > key)
  100.             {
  101.                 array[j + 1] = array[j];
  102.                 j = j - 1;
  103.             }
  104.             array[j + 1] = key;
  105.         }
  106. }
  107.  
  108. int main() {
  109.     int variable;
  110.     cin >> variable;
  111.  
  112.     switch(variable){
  113.         case 1:{
  114.             const int size = 30;
  115.             char array[size];
  116.             for(int i = 0; i < size; i++){
  117.                 cin >> array[i];
  118.             }
  119.             insertionSort(array, size);
  120.  
  121.             for(int i = 0; i < size - 1; i++) {
  122.                 cout << array[i]<< " ";
  123.             }
  124.             cout << array[29];
  125.             break;
  126.         }
  127.  
  128.  
  129.         case 2:{
  130.             const int size1 = 4;
  131.             const int size2 = 5;
  132.             int array[size1][size2];
  133.             for (int i = 0; i < size1; i++) {
  134.                 for (int j = 0; j < size2; j++)
  135.                     cin >> array[i][j];
  136.             }
  137.  
  138.             size_t elementSize = sizeof(array[0][0]);
  139.             size_t arraySize = sizeof(array) / elementSize;
  140.  
  141.             qsort(&array[0][0], arraySize, elementSize, &compare);
  142.  
  143.             for (int i = 0; i < size1; ++i) {
  144.                 for (int j = 0; j < size2; ++j) {
  145.                     cout<<array[i][j]<<" ";
  146.                 }
  147.  
  148.             }
  149.  
  150.  
  151.             break;
  152.         }
  153.  
  154.         case 3:{
  155.             const int size = 10;
  156.             int array[size];
  157.             for(int i = 0; i < 10; i++){
  158.                 cin >> array[i];
  159.             }
  160.             ShakerSort(array, size);
  161.  
  162.             /*for(int i = 0; i < 10; i++){
  163.                 cout << array[i];
  164.             }*/
  165.  
  166.  
  167.             break;
  168.         }
  169.  
  170.  
  171.         default: cout << "Wrong input.";
  172.     }
  173.     return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement