[C/C++] Tính tích các giá trị dương trên 1 cột ma trận số thực

Yêu cầu:
Tính tích các giá trị dương trên 1 cột ma trận số thực

Thuật toán:
1. Viết hàm nhập vào ma trận
2. Viết hàm tính tích các giá trị dương trên 1 cột ma trận số thực

Code:

/*****Product of positive elements in column of matrix********
*Author: vncoding
*Date : 31/03/2019
************************************************************/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 100
#define M 100

void ImportData(float[][M], int, int, char*);
void PrintMatrix(float[][M], int, int);
float ProductColInMatrix(float[][M], int, int, int);
void main()
{
    int nRow, nCol;
    int iCol;
    float A[N][M];

    printf("\nNumber of row: ");
    scanf("%d", &nRow);
    printf("\nNumber of column: ");
    scanf("%d", &nCol);
    do
    {
        printf("\nNumber of specified column: ");
        scanf("%d", &iCol);
    } while (iCol <= 0 || iCol > nRow);
    

    ImportData(A, nRow, nCol, "A");
    PrintMatrix(A, nRow, nCol);

    printf("\nProduct of positive elements in column (%d) matrix: %f", 
            iCol,
        ProductColInMatrix(A, nRow, nCol, iCol));

    getch();
}

/*************************************************************
* Function      : ProductColInMatrix()
* Parameter     : A[][M]: input matrix (I)
                  nRow  : row number   (I)
                  nCol  : column number(I)  
                  specCol  : specified column(I)
* Return        : int
* Description   : Product of positive elements in column of matrix
*************************************************************/
float ProductColInMatrix(float A[][M], int nRow, int nCol, int specCol)
{
    int iRow, iCol;
    float product = 1.0;
    for (iRow = 0; iRow < nRow; iRow++)
    {
        for (iCol = 0; iCol < nCol; iCol++)
        {
            if (((iCol + 1) == specCol) && A[iRow][iCol] > 0)
                product *= A[iRow][iCol];
        }
    }
    return product;
}

/*************************************************************
* Function      : ImportData()
* Parameter     : A[][M]: input matrix (I)
                  nRow  : row number   (I)
                  nCol  : column number(I)
                  nameMatrix: matrix name (I)
* Return        : void
* Description   : Import matrix data
*************************************************************/
void ImportData(float Matrix[][M], int nRow, int nCol, char* nameMatrix)
{
    int iRow, iCol;
    for (iRow = 0; iRow < nRow; iRow++)
        for (iCol = 0; iCol < nCol; iCol++)
        {
            printf("\n%s[%d][%d] = ", nameMatrix, iRow, iCol);
            scanf("%f", &Matrix[iRow][iCol]);
        }
}

/*************************************************************
* Function      : PrintMatrix()
* Parameter     : Matrix: input matrix (I)
                  nRow  : row number   (I)
                  nCol  : column number(I)
* Return        : void
* Description   : Display matrix data
*************************************************************/
void PrintMatrix(float Matrix[][M], int nRow, int nCol)
{
    int iRow, iCol;
    printf("\nA = ");
    for (iRow = 0; iRow < nRow; iRow++)
    {
        printf("\n");
        for (iCol = 0; iCol < nCol; iCol++)
        {
            printf("\t%.2f\t", Matrix[iRow][iCol]);
        }
    }
}

Kết quả:
Number of row: 3
Number of column: 4
Number of specified column: 2

A[0][0] = -2
A[0][1] = -3.4
A[0][2] = 3.4
A[0][3] = 5.6
A[1][0] = 3.4
A[1][1] = 21
A[1][2] = -3.5
A[1][3] = 3.4
A[2][0] = 12.3
A[2][1] = 5.6
A[2][2] = 7.6
A[2][3] = 7.8

A =
-2.00 -3.40 3.40 5.60
3.40 21.00 -3.50 3.40
12.30 5.60 7.60 7.80

Product of positive elements in column (2) matrix: 117.599998

Be the first to comment

Leave a Reply