13405 - Struct - Matrix   

Description

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

Matrix

          - int rowLength

          - int colLength

          - int values[10][10]

其中用rowLength來表示該矩陣的列數、colLength表示該矩陣的欄數、二array values用來記錄該矩陣裡面的值

 

再給定主要執行程式main.c (題號.c)、以及Header檔function.h (題號.h);請試著完成Header檔中未實現的函式:Add()Sub()Mul()

Methods:

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

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

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

 

Note:

  1. 1 <= rowLength, colLength <= 10
  2. 當兩個矩陣的row長度相等column長度也相等,兩個矩陣才能進行加減
  3. 第一個矩陣的column長度等於第二個矩陣的row長度,兩個矩陣才能進行相乘

 

function.c

#include "function.h"
 
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][j]);
                if (j == m.colLength - 1)
                {
                    if (i != m.rowLength - 1)
                        printf("\n");
                }
                else
                    printf(" ");
            }
        }
        printf(" ]\n");
    }
}

Input

Input:

輸入符合以下格式

op

r1 c1

(r1 * c1)

r2 c2

(r2 * c2)

 

Note:

  1. op字元代表運算值,’+’代表加法、’-‘代表減法、’*’代表乘法
  2. 無需處理輸入

Output

無需處理輸出

Sample Input  Download

Sample Output  Download

Partial Judge Code

13405.c

Partial Judge Header

13405.h

Tags




Discuss