Работа с целочисленной квадратной матрицей
Информатика

Создайте программу на языке C++, которая будет работать с целочисленной квадратной матрицей. В программе необходимо

Создайте программу на языке C++, которая будет работать с целочисленной квадратной матрицей. В программе необходимо выполнить следующие задачи:
1) Найти произведение элементов в строках, которые не содержат отрицательных элементов.
2) Найти максимальное значение среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Обратите внимание, что использование динамического массива не допускается.
Верные ответы (1):
  • Shustrik
    Shustrik
    68
    Показать ответ
    Название: Работа с целочисленной квадратной матрицей в C++

    Объяснение:
    Для выполнения данной задачи вам понадобится использовать двумерный массив типа `int`. Вам потребуется реализовать две отдельные функции - одну для нахождения произведения элементов в строках без отрицательных элементов и другую для нахождения максимального значения суммы элементов диагоналей.
    1) Для нахождения произведения элементов в строках без отрицательных элементов:
    - Создайте функцию с именем `multiplyRowElements`, которая принимает в качестве параметров двумерный массив и его размер.
    - Внутри функции инициализируйте переменную `product` со значением 1, которая будет хранить произведение элементов.
    - Пройдитесь по каждой строке массива и проверьте, содержит ли она отрицательные элементы.
    - Если строка не содержит отрицательных элементов, умножьте каждый элемент строки на переменную `product`.
    - Верните значение переменной `product` в качестве результата функции.

    2) Для нахождения максимального значения суммы элементов диагоналей, параллельных главной диагонали:
    - Создайте функцию с именем `findMaxDiagonalSum`, которая принимает в качестве параметров двумерный массив и его размер.
    - Инициализируйте переменную `maxSum` со значением минимального значения типа `int`, которая будет хранить максимальную сумму элементов диагоналей.
    - Пройдитесь по каждой диагонали, параллельной главной диагонали, и вычислите сумму ее элементов.
    - Сравните полученную сумму с текущим максимальным значением `maxSum` и, если она больше, обновите `maxSum`.
    - Верните значение переменной `maxSum` в качестве результата функции.

    Доп. материал:
    cpp
    #include

    const int MATRIX_SIZE = 4;

    int multiplyRowElements(int matrix[MATRIX_SIZE][MATRIX_SIZE], int size)
    {
    int product = 1;

    for (int i = 0; i < size; i++)
    {
    bool hasNegative = false;

    for (int j = 0; j < size; j++)
    {
    if (matrix[i][j] < 0)
    {
    hasNegative = true;
    break;
    }

    product *= matrix[i][j];
    }

    if (hasNegative)
    {
    product = 1;
    }
    }

    return product;
    }

    int findMaxDiagonalSum(int matrix[MATRIX_SIZE][MATRIX_SIZE], int size)
    {
    int maxSum = INT_MIN;

    for (int i = 0; i < size; i++)
    {
    int sum = 0;

    for (int j = 0; j < size; j++)
    {
    if (i + j == size - 1 || i - j == size - 1)
    {
    sum += matrix[i][j];
    }
    }

    if (sum > maxSum)
    {
    maxSum = sum;
    }
    }

    return maxSum;
    }

    int main()
    {
    int matrix[MATRIX_SIZE][MATRIX_SIZE] = {
    {1, 2, 3, 4},
    {5, 6, -7, 8},
    {9, -10, 11, 12},
    {13, 14, 15, -16}
    };

    int product = multiplyRowElements(matrix, MATRIX_SIZE);
    int maxSum = findMaxDiagonalSum(matrix, MATRIX_SIZE);

    std::cout << "Произведение элементов в строках без отрицательных элементов: " << product << std::endl;
    std::cout << "Максимальная сумма элементов диагоналей, параллельных главной диагонали: " << maxSum << std::endl;

    return 0;
    }


    Совет:
    Для более легкого понимания выполнения программы, рекомендуется внимательно изучить работу с двумерными массивами и понять, как работают вложенные циклы. Также рекомендуется обратить внимание на использование условных операторов и области видимости переменных.

    Упражнение:
    Напишите программу, которая выполнит указанные задачи для другой квадратной матрицы размером 3x3. Проверьте программу на нескольких тестовых матрицах.
Написать свой ответ: