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
- {
- printf("Введите порядок: \n");
- IsNotCorrect = false;
- getline(cin, inputLine);
- try
- {
- order = stoi(inputLine);
- }
- catch (...)
- {
- IsNotCorrect = true;
- printf("Порядок должен быть числом.\n");
- }
- if (!IsNotCorrect && (((order < 1) || (order > 10000))))
- {
- printf("Порядок должен принадлежать промежутку от 1 до 10000.\n");
- IsNotCorrect = true;
- }
- } while (IsNotCorrect);
- return order;
- }
- int readElement()
- {
- int order;
- bool IsNotCorrect;
- string inputLine;
- do
- {
- printf("Введите элемент: \n");
- IsNotCorrect = false;
- getline(cin, inputLine);
- try
- {
- order = stoi(inputLine);
- }
- catch (...)
- {
- IsNotCorrect = true;
- printf("Элемент должен быть числом.\n");
- }
- if (!IsNotCorrect && (((order < -10000) || (order > 10000))))
- {
- printf("Элемент должен находиться в промежутке от -10000 до 10000\n");
- 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++)
- {
- printf("%d\t", matrix[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- }
- 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;
- }
- }
- }
- 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* createArrayOfSum(int** matrix, int order)
- {
- int* arr_sum = new int[order];
- for (int i = 0; i < order; i++)
- arr_sum[i] = 0;
- for (int i = 0; i < order; ++i)
- {
- for (int j = 0; j < order; ++j)
- {
- arr_sum[i] += matrix[i][j];
- }
- }
- return arr_sum;
- }
- int** insertionSort(int* arr_sum, int** &matrix, const int order)
- {
- int buf;
- int* buf_string = new int[order];
- int j;
- for (int i = 1; i < order; i++)
- {
- buf = arr_sum[i];
- for (int k = 0; k < order; k++)
- buf_string[k] = matrix[i][k];
- j = i - 1;
- while (j >= 0 && arr_sum[j] > buf)
- {
- arr_sum[j + 1] = arr_sum[j];
- for (int k = 0; k < order; k++)
- matrix[j + 1][k] = matrix[j][k];
- j = j - 1;
- }
- arr_sum[j + 1] = buf;
- for (int k = 0; k < order; k++)
- matrix[j+1][k] = buf_string[k];
- }
- return matrix;
- }
- int main()
- {
- setlocale(LC_ALL, "ru");
- int order;
- int** matrix;
- order = readOrder();
- matrix = createMatrix(order);
- printf("Введите матрицу\n");
- readMatrix(matrix, order);
- printf("Матрица, для которой производились вычисления:\n");
- printMatrix(matrix, order);
- printf("Матрица, полученная в результате сортировки:\n");
- printMatrix(insertionSort(createArrayOfSum(matrix, order), matrix, order), order);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement