13429 - Struct - Matrix (2)   

Description

給定一個名為Matrix的struct,如下列所示:

Matrix

          - int rowLength

          - int colLength

          - int *values

rowLength表示該矩陣的列數、colLength表示該矩陣的欄數、values則是用來記錄矩陣數值的一維陣列

 

給定主要執行程式main.c (題號.c)、以及Header檔function.h (題號.h);請試著完成Header檔中未實現的函式:Init()Add()Sub()Mul()使的在獲得任兩個矩陣可以計算出其相加、相減、相乘的結果,並將它們印出來(如何印出矩陣已寫在function.c中,請直接使用)

 

Methods:

- void Init(Matrix *m, int _rowLength, int _colLength) – 將傳入的矩陣指標mrowLength值設定為_rowLengthcolLength值設定為_colLength、並動態規劃一個長度為_rowLength * _colLength一維陣列

- void Add(Matrix m1, Matrix m2) – 印出”Matrix 1 + Matrix 2:\n”字串,並將兩個矩陣相加,最後使用Print()將結果印出來;當兩個矩陣的無法相加時,則印出Uncalculable\n”

- void Sub(Matrix m1, Matrix m2) – 印出”Matrix 1 - Matrix 2:\n”字串,並將兩個矩陣相減,最後使用Print()將結果印出來;當兩個矩陣的無法相減時,則印出Uncalculable\n”

- void Mul(Matrix m1, Matrix m2) – 印出”Matrix 1 * Matrix 2:\n”字串,並將兩個矩陣相乘,最後使用Print()將結果印出來;當兩個矩陣的無法相乘時,則印出Uncalculable\n”

 

Note:

  1. 當兩個矩陣的row長度相等column長度也相等時,兩個矩陣才能進行加減
  2. 當第一個矩陣的column長度和第二個矩陣的row長度相等時,兩個矩陣才能進行相乘

 

function.c

#include "function.h"
 
void Init(Matrix *self, int _rowLength, int _colLength)
{
    // TODO
}
 
void Add(Matrix m1, Matrix m2)
{
    // TODO
 
}
 
void Sub(Matrix m1, Matrix m2)
{
    // TODO
}
 
void Mul(Matrix m1, Matrix m2)
{
    // TODO
}
 
void Print(Matrix m)
{
    if (m.rowLength != 0 && m.colLength != 0)
    {
        printf("[ ");
        for (int i = 0; i < m.rowLength; i++)
        {
            if (i != 0)
                printf("  ");
 
            for (int j = 0; j < m.colLength; j++)
            {
                printf("%d", m.values[i * m.colLength + j]);
                if (j == m.colLength - 1)
                {
                    if (i != m.rowLength - 1)
                        printf("\n");
                }
                else
                    printf(" ");
            }
        }
        printf(" ]\n");
    }
}

Input

輸入符合以下格式

r1 c1

(r1 * c1)

r2 c2

(r2 * c2)

Output

輸出符合以下格式

Matrix 1 + Matrix 2:

(m1 + m2)

 

Matrix 1 - Matrix 2:

(m1 - m2)

 

Matrix 1 * Matrix 2:

(m1 * m2)

Sample Input  Download

Sample Output  Download

Partial Judge Code

13429.c

Partial Judge Header

13429.h

Tags




Discuss