Advertisement
MaksNew

Untitled

Sep 9th, 2021
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.34 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.         cout << "Введите порядок: " << endl;
  13.         IsNotCorrect = false;
  14.         getline(cin, inputLine);
  15.         try
  16.         {
  17.             order = stoi(inputLine);
  18.         }
  19.         catch (...)
  20.         {
  21.             IsNotCorrect = true;
  22.             cout << "Порядок должен быть числом." << endl;
  23.         }
  24.         if ((((order < 1) || (order > 10000))) && !IsNotCorrect)
  25.         {
  26.             cout << "Порядок должен принадлежать промежутку от 1 до 10000" << endl;
  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.         cout << "Введите элемент: " << endl;
  41.         IsNotCorrect = false;
  42.         getline(cin, inputLine);
  43.         try
  44.         {
  45.             order = stoi(inputLine);
  46.         }
  47.         catch (...)
  48.         {
  49.             IsNotCorrect = true;
  50.             cout << "Элемент должен быть числом." << endl;
  51.         }
  52.         if ((((order < 1) || (order > 10000))) && !IsNotCorrect)
  53.         {
  54.             cout << "Элемент должен находиться в промежутке от 1 до 10000" << endl;
  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.             cout << matrix[i][j] << "\t";
  76.         }
  77.         cout << endl;
  78.     }
  79.     cout << endl;
  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. int* createVector(int& order)
  96. {
  97.     int* vec = new int[order];
  98.     return vec;
  99. }
  100.  
  101. void printVector(int* vec, int order)
  102. {
  103.     for (int i = 0; i < order; i++) {
  104.         cout << vec[i] << " ";
  105.     }
  106.     cout << endl;
  107. }
  108.  
  109. void readVector(int*& vec, int order)
  110. {
  111.     int element;
  112.     for (int i = 0; i < order; ++i)
  113.     {
  114.         element = readElement();
  115.            vec[i] = element;
  116.     }
  117. }
  118.  
  119. void calculateEvensNoEvensElements(int** matrix, int order, int &countEvens, int &countNoEvens)
  120. {
  121.     for (int i = 0; i < order; ++i)
  122.     {
  123.         for (int j = 0; j < order; ++j)
  124.         {
  125.             if (matrix[i][j] % 2 == 0)
  126.                 ++countEvens;
  127.             if (matrix[i][j] % 2 == 1)
  128.                 ++countNoEvens;
  129.         }
  130.     }
  131. }
  132.  
  133. int* multiplyMatrixOnVector(int** matrix, int order, int* vec)
  134. {
  135.     int* new_vec = new int[order];
  136.     for (int i = 0; i < order; ++i)
  137.         new_vec[i] = 0;
  138.     for (int i = 0; i < order; ++i)
  139.     {
  140.         for (int j = 0; j < order; ++j)
  141.         {
  142.             new_vec[i] += matrix[i][j] * vec[i];
  143.         }
  144.     }
  145.     return new_vec;
  146. }
  147.  
  148. int main()
  149. {
  150.     setlocale(LC_ALL, "ru");
  151.     int order;
  152.     int countEvens = 0;
  153.     int countNoEvens = 0;
  154.     int** matrix;
  155.     int* vec;
  156.     int* vec1;
  157.     order = readOrder();
  158.     matrix = createMatrix(order);
  159.     vec = createVector(order);
  160.     cout << "Введите вектор" << endl;
  161.     readVector(vec, order);
  162.     cout << "Введите матрицу" << endl;
  163.     readMatrix(matrix, order);
  164.     cout << "Матрица, для которой производились вычисления:" << endl;
  165.     printMatrix(matrix, order);
  166.     calculateEvensNoEvensElements(matrix, order, countEvens, countNoEvens);
  167.     cout << "Количество чётных элементов в матрице: " << countEvens << "\n" << "Количество нечётных элементов в матрице: " << countNoEvens << endl;
  168.     cout << "Результат умножения вектора на матрицу: " << endl;
  169.     vec1 = multiplyMatrixOnVector(matrix, order, vec);
  170.     printVector(vec1, order);
  171. }
  172.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement