Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Сырых В.Н. Дана прямоугольная матрица. Найти строку с наибольшей и наименьшей суммой элементов.Вывести на печать найденные строки и суммы их элементов.
- #include "pch.h"
- #include <iostream>
- #include <time.h>
- using namespace std;
- const int randomLimit = 21; // предел выбора чисел для алгоритма
- void ResetInput(int &m)
- {
- bool t = cin.good();
- switch (t)
- {
- case 1:
- {
- while (t)
- {
- cin.clear();
- cout << "\nВвод некорректен. Повторите ввод: ";
- if(!(cin >> m)) ResetInput(m);
- if (m > 1) break;
- }
- break;
- }
- case 0:
- {
- while (!(cin >> m))
- {
- cout << "\nВвод некорректен. Повторите ввод: ";
- cin.clear();
- while (cin.get() != '\n');
- }
- break;
- }
- }
- }
- void FillMatrix(int **matrix,int m, int n)
- {
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- matrix[i][j] = rand() % randomLimit;
- }
- int CalculateSum(int numString, int n, int **matrix) // где n - длина строки
- {
- int sum = 0;
- for (int j = 0; j < n; j++)
- sum += matrix[numString][j];
- return sum;
- }
- void OutputMatrix(int start, int finish, int n, int **matrix) // 0 <= start -- номер строки с которой начинается вывод, finish <= m -- на которой заканчивается
- {
- for (int i = start; i < finish; i++)
- for (int j = 0; j < n; j++)
- {
- cout.width(3);
- if (j == n - 1)
- cout << matrix[i][j] <<" Сумма= "<<CalculateSum(i,n,matrix)<< "\n";
- else cout << matrix[i][j] << " ";
- }
- }
- int main()
- {
- srand(time(0));
- setlocale(0, "");
- int m, n, indexMin=0,indexMax=0, max=0, min=randomLimit*1000;
- cout << "Введите размер матрицы MxN\n";
- cout << "Введите М: ";
- if (!(cin >> m)) ResetInput(m);
- if(m < 1) ResetInput(m);
- cout << "Введите N: ";
- if (!(cin >> n)) ResetInput(n);
- if (n < 1) ResetInput(n);
- int **matrix = new int*[m];
- for (int i = 0; i < m; i++)
- matrix[i] = new int[n];
- FillMatrix(matrix,m,n);
- OutputMatrix(0, m, n, matrix);
- for (int i = 0; i < m; i++)
- {
- int result = CalculateSum(i, n, matrix);
- if (max < result)
- {
- max = result;
- indexMax = i;
- }
- if (min > result)
- {
- min = result;
- indexMin = i;
- }
- }
- cout << "Строка, содержащая максимальную сумму: \n";
- OutputMatrix(indexMax, indexMax + 1, n, matrix);
- cout << "Строка, содержащая минимальную сумму: \n";
- OutputMatrix(indexMin, indexMin + 1, n, matrix);
- for (int i = 0; i < n; i++)
- delete[] matrix[i];
- delete[] matrix;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement