Advertisement
MaksNew

Untitled

Sep 13th, 2021
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4.  
  5. int readOrder()
  6. {
  7.     int order;
  8.     bool IsNotCorrect;
  9.     string inputLine;
  10.     do
  11.     {
  12.         printf("Введите порядок: \n");
  13.         IsNotCorrect = false;
  14.         getline(cin, inputLine);
  15.         try
  16.         {
  17.             order = stoi(inputLine);
  18.         }
  19.         catch (...)
  20.         {
  21.             IsNotCorrect = true;
  22.             printf("Порядок должен быть числом.\n");
  23.         }
  24.         if (!IsNotCorrect && (((order < 1) || (order > 10000))))
  25.         {
  26.             printf("Порядок должен принадлежать промежутку от 1 до 10000.\n");
  27.             IsNotCorrect = true;
  28.         }
  29.     } while (IsNotCorrect);
  30.     return order;
  31. }
  32.  
  33. int readElement()
  34. {
  35.     int order;
  36.     bool IsNotCorrect;
  37.     string inputLine;
  38.     do
  39.     {
  40.         printf("Введите элемент: \n");
  41.         IsNotCorrect = false;
  42.         getline(cin, inputLine);
  43.         try
  44.         {
  45.             order = stoi(inputLine);
  46.         }
  47.         catch (...)
  48.         {
  49.             IsNotCorrect = true;
  50.             printf("Элемент должен быть числом.\n");
  51.         }
  52.         if (!IsNotCorrect && (((order < -10000) || (order > 10000))))
  53.         {
  54.             printf("Элемент должен находиться в промежутке от -10000 до 10000\n");
  55.             IsNotCorrect = true;
  56.         }
  57.     } while (IsNotCorrect);
  58.     return order;
  59. }
  60.  
  61. int** createMatrix(int& order)
  62. {
  63.     int** matrix = new int* [order];
  64.     for (int i = 0; i < order; i++) {
  65.         matrix[i] = new int[order];
  66.     }
  67.     return matrix;
  68. }
  69.  
  70. void printMatrix(int** matrix, int order)
  71. {
  72.     for (int i = 0; i < order; i++) {
  73.         for (int j = 0; j < order; j++)
  74.         {
  75.             printf("%d\t", matrix[i][j]);
  76.         }
  77.         printf("\n");
  78.     }
  79.     printf("\n");
  80. }
  81.  
  82. void readMatrix(int**& matrix, int order)
  83. {
  84.     int element;
  85.     for (int i = 0; i < order; ++i)
  86.     {
  87.         for (int j = 0; j < order; ++j)
  88.         {
  89.             element = readElement();
  90.             matrix[i][j] = element;
  91.         }
  92.     }
  93. }
  94.  
  95. void calculateEvensNoEvensElements(int** matrix, int order, int& countEvens, int& countNoEvens)
  96. {
  97.     for (int i = 0; i < order; ++i)
  98.     {
  99.         for (int j = 0; j < order; ++j)
  100.         {
  101.             if (matrix[i][j] % 2 == 0)
  102.                 ++countEvens;
  103.             if (matrix[i][j] % 2 == 1)
  104.                 ++countNoEvens;
  105.         }
  106.     }
  107. }
  108.  
  109. int* createArrayOfSum(int** matrix, int order)
  110. {
  111.     int* arr_sum = new int[order];
  112.     for (int i = 0; i < order; i++)
  113.         arr_sum[i] = 0;
  114.     for (int i = 0; i < order; ++i)
  115.     {
  116.         for (int j = 0; j < order; ++j)
  117.         {
  118.             arr_sum[i] += matrix[i][j];
  119.         }
  120.     }
  121.     return arr_sum;
  122. }
  123.  
  124. int** insertionSort(int* arr_sum, int** &matrix, const int order)
  125. {
  126.     int buf;
  127.     int* buf_string = new int[order];
  128.     int j;
  129.     for (int i = 1; i < order; i++)
  130.     {
  131.         buf = arr_sum[i];
  132.         for (int k = 0; k < order; k++)          
  133.             buf_string[k] = matrix[i][k];
  134.         j = i - 1;
  135.         while (j >= 0 && arr_sum[j] > buf)
  136.         {
  137.             arr_sum[j + 1] = arr_sum[j];
  138.             for (int k = 0; k < order; k++)
  139.                 matrix[j + 1][k] = matrix[j][k];
  140.             j = j - 1;
  141.         }
  142.         arr_sum[j + 1] = buf;
  143.         for (int k = 0; k < order; k++)
  144.             matrix[j+1][k] = buf_string[k];
  145.     }
  146.     return matrix;
  147. }
  148.  
  149. int main()
  150. {
  151.     setlocale(LC_ALL, "ru");
  152.     int order;
  153.     int** matrix;
  154.     order = readOrder();
  155.     matrix = createMatrix(order);
  156.     printf("Введите матрицу\n");
  157.     readMatrix(matrix, order);
  158.     printf("Матрица, для которой производились вычисления:\n");
  159.     printMatrix(matrix, order);
  160.     printf("Матрица, полученная в результате сортировки:\n");
  161.     printMatrix(insertionSort(createArrayOfSum(matrix, order), matrix, order), order);
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement