Advertisement
Chepets_Sergey

lab9

Dec 11th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <cstring>
  6. #include <iostream>
  7. #include <windows.h>
  8.  
  9. using namespace std;
  10.  
  11. template <typename T>
  12. class MyClass
  13. {
  14. private:
  15.     T *arr; // указатель для выделения памяти под массив
  16.     int size; // размер массива
  17.  
  18. public:
  19.  
  20. /** Конструктор **/
  21. MyClass()
  22. {
  23.   InArray();
  24. }
  25.  
  26. /** Деструктор **/
  27. ~MyClass()
  28. {
  29. }
  30.  
  31. /** Ввод массива **/
  32. InArray()
  33. {
  34. //Ввод количества єлементов массива
  35.     cout <<"Введите размерность массива: " ;
  36.     cin>>size;
  37.  
  38. //Проверка размера
  39.     if (size <= 0) {
  40.         cerr << "Размер масива должен быть положитлеьным!" << endl;
  41.         return 1;
  42.     }
  43.     arr = new T[size]; // выделение памяти под массив
  44.  
  45.     system("CLS");
  46.  
  47. // заполнение массива
  48.     cout <<"Введите элементы массива"<<endl;
  49.     for (int i=0; i<size; i++){
  50.         cout<< "["<< i+1 <<"]: ";
  51.         cin>>arr[i];
  52.     }
  53.     system("CLS");
  54. }
  55.     /** Сортировка массива пузырьком **/
  56. insertionSort(){
  57. T temp; // временная переменная для хранения значения элемента сортируемого массива
  58. int item; // индекс предыдущего элемента
  59.     for (int counter = 1; counter < size; counter++)
  60.     {
  61.         temp = arr[counter]; // инициализируем временную переменную текущим значением элемента массива
  62.         item = counter-1; // запоминаем индекс предыдущего элемента массива
  63.         while(item >= 0 && arr[item] > temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
  64.         {
  65.             arr[item + 1] = arr[item]; // перестановка элементов массива
  66.             arr[item] = temp;
  67.             item--;
  68.         }
  69.     }
  70. }
  71.  
  72. /** Вывод массива**/
  73. void OutArray(){
  74.  cout<<"Упорядоченный массив (по возрастанию): "<<endl;
  75.     for (int i=0; i<size; i++)
  76.         cout << arr[i]<<' ';
  77.     cout<<endl;
  78.  
  79.     delete []arr; // освобождение памяти
  80. }
  81.  
  82. };
  83.  
  84. int main()
  85. {
  86.     SetConsoleCP(1251);
  87.     SetConsoleOutputCP(1251);
  88.  
  89.     lone:
  90.  
  91. string type;
  92. system("cls");
  93. cout<< "С каким типом данных работать? ";
  94. cin>> type;
  95. system("cls");
  96.  
  97.  if (type=="int")
  98.     {
  99.      MyClass<int> MyObject;
  100.      MyObject.insertionSort();
  101.      MyObject.OutArray();
  102.     } else
  103.            {
  104.              if (type== "float" )
  105.              {
  106.                 MyClass<float> MyObject;
  107.                 MyObject.insertionSort();
  108.                 MyObject.OutArray();
  109.              } else
  110.                      {
  111.                        if (type=="double")
  112.                        {
  113.                         MyClass<double> MyObject;
  114.                         MyObject.insertionSort();
  115.                         MyObject.OutArray();
  116.                        }else
  117.                             {
  118.                               if(type=="char"){
  119.                                 MyClass<char> MyObject;
  120.                                 MyObject.insertionSort();
  121.                                 MyObject.OutArray();
  122.                               }else
  123.                               {
  124.                                system("cls");
  125.                                cout<< "Вы можете работать только с int, float, double, char, попробуйте еще раз!" <<endl;
  126.                                system("pause");
  127.                                goto lone;
  128.                               }
  129.                             }
  130.                      }
  131.            }
  132.    return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement