Напишите программу на C++, которая работает с целочисленной квадратной матрицей. Найдите: 1) произведение элементов

  • 8
Напишите программу на C++, которая работает с целочисленной квадратной матрицей. Найдите: 1) произведение элементов в строках, которые не содержат отрицательных элементов; 2) максимальную сумму элементов в диагоналях, параллельных главной диагонали матрицы. Не используйте динамический массив.
Маркиз
31
Конечно! Вот программный код на C++, который позволяет работать с целочисленной квадратной матрицей, чтобы решить задачу:

cpp
#include

const int SIZE = 3; // Размерность матрицы

void calculateProduct(int matrix[][SIZE]) {
int product = 1;
bool hasNegative = false;

for (int i = 0; i < SIZE; i++) {
bool isNegative = false;

// Проверка наличия отрицательных элементов в строке
for (int j = 0; j < SIZE; j++) {
if (matrix[i][j] < 0) {
isNegative = true;
break;
}
}

// Если в строке нет отрицательных элементов, вычисляем произведение
if (!isNegative) {
for (int j = 0; j < SIZE; j++) {
product *= matrix[i][j];
}
} else {
hasNegative = true;
}
}

if (hasNegative) {
std::cout << "Есть строки с отрицательными элементами. Произведение элементов в таких строках невозможно найти." << std::endl;
} else {
std::cout << "Произведение элементов в строках без отрицательных элементов: " << product << std::endl;
}
}

void calculateMaxDiagonalSum(int matrix[][SIZE]) {
int maxSum = matrix[0][0];

// Вычисление сумм диагоналей, параллельных главной диагонали
for (int i = 1; i < SIZE * 2 - 1; i++) {
int sum = 0;
int j = i < SIZE ? i : SIZE - 1;
int k = i < SIZE ? 0 : i - SIZE + 1;

while (j >= 0 && k < SIZE) {
sum += matrix[j][k];
j--;
k++;
}

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

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

int main() {
int matrix[SIZE][SIZE];

std::cout << "Введите элементы матрицы:" << std::endl;

for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
std::cin >> matrix[i][j];
}
}

calculateProduct(matrix);
calculateMaxDiagonalSum(matrix);

return 0;
}


Программа начинается с объявления константы `SIZE`, которая определяет размерность матрицы (в данном случае равна 3). Затем определены две функции: `calculateProduct` для нахождения произведения элементов в строках без отрицательных элементов и `calculateMaxDiagonalSum` для нахождения максимальной суммы элементов в диагоналях, параллельных главной диагонали матрицы.

В `main` функции мы сначала объявляем матрицу `matrix` и заполняем ее значениями, которые вводит пользователь. Затем вызываем функции `calculateProduct` и `calculateMaxDiagonalSum`, передавая им созданную матрицу.

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

Надеюсь, этот подробный ответ помог вам понять и решить задачу по программированию на C++! Если у вас возникнут вопросы, не стесняйтесь задавать их.