Xom9ik

Alg_Lab_3 (lll semester)

Oct 3rd, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <ctime>
  4. #include <random>
  5. #include <fstream>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. int* bubble(int* massiv, int size)
  11. {
  12.     for (int i = 0; i < size; i++)
  13.         for (int j = size - 1; j > i; j--)
  14.             if (massiv[j] < massiv[j - 1])
  15.                 swap(massiv[j], massiv[j - 1]);
  16.     return massiv;
  17. }
  18. int* shekerSort(int* massiv, int size)
  19. {
  20.     int left = 0, right = size - 1;
  21.     int flag = 1;
  22.     while ((left < right) && flag > 0)
  23.     {
  24.         flag = 0;
  25.         for (int i = left; i < right; i++)
  26.             if (massiv[i] > massiv[i + 1])
  27.             {
  28.                 swap(massiv[i], massiv[i + 1]);
  29.                 flag = 1;
  30.             }
  31.         right--;
  32.         for (int i = right; i > left; i--)
  33.             if (massiv[i - 1] > massiv[i])
  34.             {
  35.                 swap(massiv[i - 1], massiv[i]);
  36.                 flag = 1;
  37.             }
  38.         left++;
  39.     }
  40.     return massiv;
  41. }
  42.  
  43.  
  44. int main()
  45. {
  46.     srand(time(NULL));
  47.     int option = 0;
  48.     while (option < 1 || option > 3)
  49.     {
  50.         cout << "1.Manual input" << endl;
  51.         cout << "2.Random" << endl;
  52.         cout << "3.File" << endl;
  53.         cin >> option;
  54.         switch (option)
  55.         {
  56.         case 1:
  57.         {
  58.             int size, method;
  59.             cout << "Enter size: ";
  60.             cin >> size;
  61.             int *massiv = new int[size];
  62.             cout << "Enter value: " << endl;
  63.             for (int i = 0; i < size; i++)
  64.             {
  65.                 cout << "[" << i << "]= ";
  66.                 cin >> massiv[i];
  67.             }
  68.             cout << "\nBubble(1) or Shaker(2): ";
  69.             cin >> method;
  70.             if (method == 1)
  71.                 bubble(massiv, size);
  72.             else if (method == 2)
  73.                 bubble(massiv, size);
  74.             else
  75.                 cout << "Enter 1 or 2" << endl;
  76.             cout << "\nSorting massiv: " << endl;
  77.             for (int i = 0; i < size; i++)
  78.                 cout << massiv[i] << " ";
  79.             cout << endl;
  80.             break;
  81.         }          
  82.         case 2:
  83.         {
  84.             int size, method;
  85.             cout << "Enter size: ";
  86.             cin >> size;
  87.             int *massiv = new int[size];
  88.             cout << "Massiv: " << endl;
  89.             for (int i = 0; i < size; i++)
  90.             {
  91.                 massiv[i] = rand() % 100;
  92.                 cout << massiv[i] << " ";
  93.             }
  94.             cout << "\nBubble(1) or Shaker(2): ";
  95.             cin >> method;
  96.             if (method == 1)
  97.                 bubble(massiv, size);
  98.             else if (method == 2)
  99.                 bubble(massiv, size);
  100.             else
  101.                 cout << "Enter 1 or 2" << endl;
  102.             cout << "\nSorting massiv: " << endl;
  103.             for (int i = 0; i < size; i++)
  104.                 cout << massiv[i] << " ";
  105.             cout << endl;
  106.             break;
  107.         }          
  108.         case 3:
  109.         {
  110.             int size, method;
  111.             ifstream myfile("file.txt");
  112.             vector<int> vec;
  113.             cout << "Massiv: " << endl;
  114.             int id = 0;
  115.             int buf;
  116.             while (myfile >> buf)
  117.             {
  118.                 vec.push_back(buf);
  119.                 cout << vec[id] << " ";
  120.                 id++;
  121.             }
  122.             size = vec.size();
  123.             int* massiv = &vec[0];
  124.             cout << "\nBubble(1) or Shaker(2): ";
  125.             cin >> method;
  126.             if (method == 1)
  127.                 bubble(massiv, size);
  128.             else if (method == 2)
  129.                 bubble(massiv, size);
  130.             else
  131.                 cout << "Enter 1 or 2" << endl;
  132.             ofstream output("file_out.txt");
  133.             cout << "\nSorting massiv: " << endl;
  134.             for (int i = 0; i < size; i++)
  135.                 cout << massiv[i] << " ";
  136.             cout << endl;
  137.             for (int i = 0; i < size; i++)
  138.                 output << massiv[i] << " ";
  139.             break;
  140.         }      
  141.         default: cout << "Enter 1-3" << endl; break;
  142.         }
  143.     }
  144.     system("pause");
  145.     return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment