Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <cstring>
- #include <iostream>
- #include <windows.h>
- using namespace std;
- template <typename T>
- class MyClass
- {
- private:
- T *arr; // указатель для выделения памяти под массив
- int size; // размер массива
- public:
- /** Конструктор **/
- MyClass()
- {
- InArray();
- }
- /** Деструктор **/
- ~MyClass()
- {
- }
- /** Ввод массива **/
- InArray()
- {
- //Ввод количества єлементов массива
- cout <<"Введите размерность массива: " ;
- cin>>size;
- //Проверка размера
- if (size <= 0) {
- cerr << "Размер масива должен быть положитлеьным!" << endl;
- return 1;
- }
- arr = new T[size]; // выделение памяти под массив
- system("CLS");
- // заполнение массива
- cout <<"Введите элементы массива"<<endl;
- for (int i=0; i<size; i++){
- cout<< "["<< i+1 <<"]: ";
- cin>>arr[i];
- }
- system("CLS");
- }
- /** Сортировка массива пузырьком **/
- insertionSort(){
- T temp; // временная переменная для хранения значения элемента сортируемого массива
- int item; // индекс предыдущего элемента
- for (int counter = 1; counter < size; counter++)
- {
- temp = arr[counter]; // инициализируем временную переменную текущим значением элемента массива
- item = counter-1; // запоминаем индекс предыдущего элемента массива
- while(item >= 0 && arr[item] > temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
- {
- arr[item + 1] = arr[item]; // перестановка элементов массива
- arr[item] = temp;
- item--;
- }
- }
- }
- /** Вывод массива**/
- void OutArray(){
- cout<<"Упорядоченный массив (по возрастанию): "<<endl;
- for (int i=0; i<size; i++)
- cout << arr[i]<<' ';
- cout<<endl;
- delete []arr; // освобождение памяти
- }
- };
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- lone:
- string type;
- system("cls");
- cout<< "С каким типом данных работать? ";
- cin>> type;
- system("cls");
- if (type=="int")
- {
- MyClass<int> MyObject;
- MyObject.insertionSort();
- MyObject.OutArray();
- } else
- {
- if (type== "float" )
- {
- MyClass<float> MyObject;
- MyObject.insertionSort();
- MyObject.OutArray();
- } else
- {
- if (type=="double")
- {
- MyClass<double> MyObject;
- MyObject.insertionSort();
- MyObject.OutArray();
- }else
- {
- if(type=="char"){
- MyClass<char> MyObject;
- MyObject.insertionSort();
- MyObject.OutArray();
- }else
- {
- system("cls");
- cout<< "Вы можете работать только с int, float, double, char, попробуйте еще раз!" <<endl;
- system("pause");
- goto lone;
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement