Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- //#include "stdafx.h"
- using namespace std;
- // Выводит матрицу
- void print_matrix(int ** matrix, int sizeX, int sizeY) {
- cout << "Матрица:" << endl;
- for (int i = 0; sizeY > i; i++) {
- for (int j = 0; sizeX > j; j++) {
- cout << matrix[i][j] << " ";
- }
- cout << endl;
- }
- cout << endl;
- }
- // Возвращает (создает) случайную матрицу (с знач. от 0 до 9)
- int ** gen_matrix_rand(int sizeX = 5, int sizeY = 5) {
- int ** matrix = new int * [sizeY];
- for (int i = 0; sizeY > i; i++) {
- matrix[i] = new int [sizeX];
- for (int j = 0; sizeX > j; j++) {
- matrix[i][j] = rand() % 10;
- }
- }
- cout << "Сгенерирована матрица размером " << sizeX << " на " << sizeY << endl;
- return matrix;
- }
- // Функция для решения задачи
- // --------------------------
- // Если в прямоугольногой мат
- // рице все суммы элементов с
- // трок попадают на заданнный
- // отрезок, определить номеер
- // строки с максимальной сумм
- // ой элементов, иначе опреде
- // лить номера строк, сумма э
- // лементов которых не попала
- // на заданный отрезоооооооок
- void algorithm(int ** matrix, int sizeX, int sizeY) {
- int * arr_sum = new int[sizeY];
- bool flag = 0;
- int range_start; // Значение интервала ОТ (включительно)
- int range_finish; // Значения интервала ДО (включительно)
- // Ввод значений интервала
- cout << "Введите интервал суммы строк ОТ:";
- cin >> range_start;
- cout << "Введите интервал суммы строк ДО:";
- cin >> range_finish;
- // Нахождение сумм строк
- // Если найдется хоть одна: начнется вывода
- // аких строк (все в одном цикле)
- for (int i = 0; i < sizeY; i++) {
- int sum = 0;
- for (int j = 0; j < sizeX; j++) {
- sum += matrix[i][j];
- }
- arr_sum[i] = sum;
- if (sum > range_finish || range_start > sum) {
- if (flag == 0) {
- cout << "Строки, сумма которых не попала на заданный отрезок:";
- }
- cout << " " << i + 1;
- flag = 1;
- }
- }
- // Если таких все суммы строк в интервале
- if (flag == 0) {
- int max = 0;
- int max_id = 0;
- for (int i = 0; i < sizeY; i++) {
- if (arr_sum[i] > max) {
- max_id = i;
- max = arr_sum[i];
- }
- }
- cout << "Номер строки с наибольшей суммой элементов: " << max_id + 1;
- }
- cout << endl;
- }
- int main() {
- srand(time(NULL));
- setlocale(LC_ALL, "Russian");
- int ** matrix = gen_matrix_rand(10, 10);
- cout << endl;
- print_matrix(matrix, 10, 10);
- cout << endl;
- algorithm(matrix, 10, 10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement