Найти произведение положительных элементов, расположенных ниже главной диагонали матрицы - 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
выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д