Найти произведение положительных элементов, расположенных ниже главной диагонали матрицы - C (СИ)
Формулировка задачи:
Проблема в том, что если нет положительных элементов, то выводит присвоенную единицу. Как исправить?
Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат. Предусмотреть в программе использование функции пользователя.
Определить произведение положительных элементов, расположенных ниже главной диагонали матрицы.
#include <iostream.h> #include <iomanip.h> #include <math.h> void Pro (int**,int,int*); int main() { int **a, i, j, n, x=1; cout << "Vvedite razmer massiva A:\n"; cin >> n ; a = new int*[n]; for(i=0; i<n; i++) a[i] = new int[n]; cout << "\nVvedite massiv A:\n"; for (i=0; i<n; i++) for (j=0; j<n; j++) { cout << "Vvedite a[" << i << "][" << j << "]: " ; cin >> a[i][j]; } cout << "\nMassiv A:\n"; for (i=0; i<n; i++) { for (j=0; j<n; j++) cout << setw (9) << a[i][j]; cout << endl; } Pro (a, n, &x); cout << "proizvedenie = " << x; cout << endl; for(i=0; i<n; i++) delete [] a[i]; delete []a; a = NULL; return 0; } void Pro (int **a, int n, int *x) { int i, j; for (i=0; i<n; i++) { for (j=0; j<i; j++) { if(a[i][j]>0) { *x*=a[i][j]; } } } }
Решение задачи: «Найти произведение положительных элементов, расположенных ниже главной диагонали матрицы»
textual
Листинг программы
... int tmp = 0; Pro (a, n, &x); if (tmp == 0) x = 0; ... } void Pro (int **a, int n, int *x) { int i, j; for (i=0; i<n; i++) { for (j=0; j<i; j++) { if(a[i][j]>0) { *x*=a[i][j]; *tmp = 1; } } } }
Объяснение кода листинга программы
В данном коде происходит следующее:
- В функции
main
инициализируется переменнаяtmp
со значением 0. - Вызывается функция
Pro
с передачей в нее указателя на матрицуa
, размер матрицыn
и указатель на переменнуюx
. - Внутри функции
Pro
инициализируются две переменныеi
иj
для цикла. - Затем, с помощью вложенных циклов, происходит перебор всех элементов матрицы
a
. - Если элемент
a[i][j]
больше нуля, то произведение этого элемента и текущего значения переменнойx
присваивается переменнойtmp
. - Переменная
tmp
инициализируется значением 1. - После завершения циклов, значение переменной
tmp
проверяется на равенство 0. - Если
tmp
равно 0, то значение переменнойx
присваивается 0. - Функция
Pro
возвращает управление в функциюmain
. - Значение переменной
x
выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д