Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- using namespace std;
- int readOrder()
- {
- int order;
- bool IsNotCorrect;
- string inputLine;
- do
- {
- cout << "Введите порядок: " << endl;
- IsNotCorrect = false;
- getline(cin, inputLine);
- try
- {
- order = stoi(inputLine);
- }
- catch (...)
- {
- IsNotCorrect = true;
- cout << "Порядок должен быть числом." << endl;
- }
- if ((((order < 1) || (order > 10000))) && !IsNotCorrect)
- {
- cout << "Порядок должен принадлежать промежутку от 1 до 10000" << endl;
- IsNotCorrect = true;
- }
- } while (IsNotCorrect);
- return order;
- }
- int readElement()
- {
- int order;
- bool IsNotCorrect;
- string inputLine;
- do
- {
- cout << "Введите элемент: " << endl;
- IsNotCorrect = false;
- getline(cin, inputLine);
- try
- {
- order = stoi(inputLine);
- }
- catch (...)
- {
- IsNotCorrect = true;
- cout << "Элемент должен быть числом." << endl;
- }
- if ((((order < 1) || (order > 10000))) && !IsNotCorrect)
- {
- cout << "Элемент должен находиться в промежутке от 1 до 10000" << endl;
- IsNotCorrect = true;
- }
- } while (IsNotCorrect);
- return order;
- }
- int** createMatrix(int& order)
- {
- int** matrix = new int* [order];
- for (int i = 0; i < order; i++) {
- matrix[i] = new int[order];
- }
- return matrix;
- }
- void printMatrix(int** matrix, int order)
- {
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++)
- {
- cout << matrix[i][j] << "\t";
- }
- cout << endl;
- }
- cout << endl;
- }
- void readMatrix(int** &matrix, int order)
- {
- int element;
- for (int i = 0; i < order; ++i)
- {
- for (int j = 0; j < order; ++j)
- {
- element = readElement();
- matrix[i][j] = element;
- }
- }
- }
- int* createVector(int& order)
- {
- int* vec = new int[order];
- return vec;
- }
- void printVector(int* vec, int order)
- {
- for (int i = 0; i < order; i++) {
- cout << vec[i] << " ";
- }
- cout << endl;
- }
- void readVector(int*& vec, int order)
- {
- int element;
- for (int i = 0; i < order; ++i)
- {
- element = readElement();
- vec[i] = element;
- }
- }
- void calculateEvensNoEvensElements(int** matrix, int order, int &countEvens, int &countNoEvens)
- {
- for (int i = 0; i < order; ++i)
- {
- for (int j = 0; j < order; ++j)
- {
- if (matrix[i][j] % 2 == 0)
- ++countEvens;
- if (matrix[i][j] % 2 == 1)
- ++countNoEvens;
- }
- }
- }
- int* multiplyMatrixOnVector(int** matrix, int order, int* vec)
- {
- int* new_vec = new int[order];
- for (int i = 0; i < order; ++i)
- new_vec[i] = 0;
- for (int i = 0; i < order; ++i)
- {
- for (int j = 0; j < order; ++j)
- {
- new_vec[i] += matrix[i][j] * vec[i];
- }
- }
- return new_vec;
- }
- int main()
- {
- setlocale(LC_ALL, "ru");
- int order;
- int countEvens = 0;
- int countNoEvens = 0;
- int** matrix;
- int* vec;
- int* vec1;
- order = readOrder();
- matrix = createMatrix(order);
- vec = createVector(order);
- cout << "Введите вектор" << endl;
- readVector(vec, order);
- cout << "Введите матрицу" << endl;
- readMatrix(matrix, order);
- cout << "Матрица, для которой производились вычисления:" << endl;
- printMatrix(matrix, order);
- calculateEvensNoEvensElements(matrix, order, countEvens, countNoEvens);
- cout << "Количество чётных элементов в матрице: " << countEvens << "\n" << "Количество нечётных элементов в матрице: " << countNoEvens << endl;
- cout << "Результат умножения вектора на матрицу: " << endl;
- vec1 = multiplyMatrixOnVector(matrix, order, vec);
- printVector(vec1, order);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement