Найти произведение всех элементов матрицы, расположенных на побочной диагонали и выше ее - C (СИ)
Формулировка задачи:
Найти произведение всех элементов, расположенных на побочной диагонали и выше ее, матрицы размером 6х6,состоящей из элементов целого типа
Если можно то попроще, как для новичка
Решение задачи: «Найти произведение всех элементов матрицы, расположенных на побочной диагонали и выше ее»
textual
Листинг программы
/* ============================================================================ Name : c_secondary_diag.c Author : UranFlex Version : 0.1 alpha License : Free for All Copyright : UranFlex 2013 Description : Найти произведение всех элементов, расположенных на побочной диагонали и выше ее, * для матрицы размером 6х6,состоящей из элементов целого типа * C, Ansi-style ============================================================================ */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define SZ 6 // размер квадратной матрицы //функция заполняет матрицу псевдослучайными данными void FillMatrix( int* matrix, const int size, const unsigned randRange, const int shift ); //функция печатает матрицу void PrintMatrix( int* matrix, const int size ); // функция рассчитывает произведение всех элементов, расположенных на побочной диагонали и выше ее unsigned long CalcMulty( int* matrix, const int size ); int main( void ) { srand( time( 0 ) ); // засеять генератор случайных чисел int a[ SZ ][ SZ ]; // заполняем матрицу псевдослучайными значениями типа int в диапазоне [ 1..5 ] FillMatrix( *a, SZ, 5, 1 ); // выводим матрицу на экран puts( "Исходная матрица" ); PrintMatrix( *a, SZ ); // рассчитываем и выводим на экран результат произведения printf( "Произведение всех элементов, расположенных на побочной диагонали и выше ее = %lu\n", CalcMulty( *a, SZ ) ); return EXIT_SUCCESS; } void FillMatrix( int* matrix, const int size, const unsigned randRange, const int shift ) { int i, j; for ( i = 0; i < size; ++i ) for ( j = 0; j < size; ++j ) // заполняем квадратную матрицу псевдослучайными данными // shift - начальное значение диапазона данных // randRange - ширина диапазона matrix[ i * size + j ] = shift + rand() % randRange; } void PrintMatrix( int* matrix, const int size ) { int i, j; for ( i = 0; i < size; ++i ) { for ( j = 0; j < size; ++j ) printf( "%4d ", matrix[ i * size + j ] ); puts( "" ); } } unsigned long CalcMulty( int* matrix, const int size ) { int i, j, index = size - 1; unsigned long mult = 1; for ( i = 0; i < size; ++i ) for ( j = 0; j < size; ++j ) // в данном условии проверяется расположен ли элемент на побочной диоганали или выше нее if ( j <= index - i ) // если проверка прошла, то домнажаем общее произведение на текущий элемент mult *= matrix[ i * size + j ]; return mult; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д