Advertisement
rozman50

FINAL Working QS with menu

Mar 8th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.99 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include "time.h"
  5.  
  6. using namespace std;
  7.  
  8. int arrSize;
  9. int *arr;
  10.  
  11. int deli(int dno, int vrh);
  12. void izpisiZaporedje();
  13. void hitroUredi(int dno, int vrh);
  14. void generirajNakljucno();
  15. void generirajNarascajoce();
  16. void generirajPadajoce();
  17. void preveri(int dno, int vrh);
  18. void definirajZaporedje();
  19.  
  20. int main()
  21. {
  22.     clock_t start, finish;
  23.     double duration;
  24.     srand(time(NULL));
  25.  
  26.     while (true) {
  27.    
  28.     int izbira;
  29.     cout <<
  30.         "Hitro uredi - izbira\n\n" <<
  31.         "1 Generiraj nakljucno zaporedje\n" <<
  32.         "2 Generiraj urejeno narascajoce zaporedje\n" <<
  33.         "3 Generiraj urejeno padajoče zaporedje\n" <<
  34.         "4 Izpis zaporedja\n" <<
  35.         "5 Uredi\n" <<
  36.         "6 Konec\n" <<
  37.         "Vasa izbira: ";
  38.     cin >> izbira;
  39.     cout << endl;
  40.  
  41.     switch (izbira) {
  42.         case 1:
  43.             definirajZaporedje();
  44.             generirajNakljucno();
  45.             break;
  46.         case 2:
  47.             definirajZaporedje();
  48.             generirajNarascajoce();
  49.             break;
  50.         case 3:
  51.             definirajZaporedje();
  52.             generirajPadajoce();
  53.             break;
  54.         case 4:
  55.             izpisiZaporedje();
  56.             break;
  57.         case 5:
  58.             start = clock();
  59.             hitroUredi(0, arrSize - 1);
  60.             finish = clock();
  61.             duration = (double)(finish - start);
  62.             cout << "Cas izvajanja: " << duration << endl;
  63.             preveri(0, arrSize - 1);
  64.             break;
  65.         case 6:
  66.             return 1;
  67.         default:
  68.             cout << "Vpisi ponovno: ";
  69.         }
  70.     cout << "------------------------" << endl;
  71.     }
  72.    
  73. }
  74.  
  75. void definirajZaporedje() {
  76.     int size;
  77.     cout << "Vnesi dolzino zaporedja: ";
  78.     cin >> size;
  79.  
  80.     arrSize = size;
  81.  
  82.     int a = size;
  83.     arr = new int[a];
  84. }
  85.  
  86. void preveri(int dno, int vrh) {
  87.     bool pravilnoUrejeno = true;
  88.     for (int i = dno; i < vrh - 1; i++) {
  89.         if (arr[i + 1] < arr[i]) {
  90.             cout << arr[i + 1] << " " << arr[i] << endl;
  91.             pravilnoUrejeno = false;
  92.         }
  93.     }
  94.     if (pravilnoUrejeno) cout << "Zaporedje je pravilno urejeno" << endl << endl;
  95.     else cout << "Zaporedje ni pravilno urejeno" << endl << endl;
  96. }
  97.  
  98.  
  99. void generirajNakljucno() {
  100.     for (int i = 0; i < arrSize; i++)
  101.         arr[i] = (rand() % 50000);
  102. }
  103.  
  104. void generirajNarascajoce() {
  105.     for (int i = 0; i < arrSize; i++)
  106.         arr[i] = i;
  107. }
  108.  
  109. void generirajPadajoce() {
  110.     for (int i = arrSize; i >= 0; i--)
  111.         arr[i] = arrSize - i;
  112. }
  113.  
  114. void hitroUredi(int dno, int vrh) {
  115.     if (dno < vrh) {
  116.         int j = deli(dno, vrh);
  117.         hitroUredi(dno, j - 1);
  118.         hitroUredi(j + 1, vrh);
  119.     }
  120. }
  121.  
  122. int deli(int dno, int vrh) {
  123.  
  124.     int m = (dno + vrh) / 2;
  125.  
  126.     int tmpA = arr[dno];
  127.     arr[dno] = arr[m];
  128.     arr[m] = tmpA;
  129.  
  130.     int pe = arr[dno];
  131.     int levi = dno + 1;
  132.     int desni = vrh;
  133.  
  134.     while (true) {
  135.  
  136.         while (arr[levi] < pe && levi <= vrh) levi++;
  137.         while (arr[desni] > pe && desni >= dno) desni--;
  138.  
  139.         if (desni <= levi) break;
  140.         else {
  141.             int tmpB = arr[levi];
  142.             arr[levi] = arr[desni];
  143.             arr[desni] = tmpB;
  144.             levi++;
  145.             desni--;
  146.         }
  147.     }
  148.  
  149.     int tmpC = arr[dno];
  150.     arr[dno] = arr[desni];
  151.     arr[desni] = tmpC;
  152.  
  153.     return desni;
  154. }
  155.  
  156. void izpisiZaporedje() {
  157.     for (int i = 0; i < arrSize; i++) {
  158.         cout << arr[i] << " ";
  159.     }
  160.     cout << endl <<endl;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement