Найти произведение всех элементов матрицы, расположенных на побочной диагонали и выше ее - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы