1. 程式人生 > >第九周專案三:稀疏矩陣的三元組表示的實現及應用(2)

第九周專案三:稀疏矩陣的三元組表示的實現及應用(2)

/*
Copyright (c)2015,煙臺大學計算機與控制工程學院
All rights reserved.
檔名稱:專案3-2.cbp
作    者:孫立立
完成日期:2015年12月4日
版 本 號:v1.0


問題描述:(2)採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 


輸入描述:無
程式輸出:測試資料
*/


標頭檔案及功能函式詳見【稀疏矩陣的三元組演算法庫】

main.cpp程式碼:

#include "tup.h"


bool MatAdd(TSMatrix a,TSMatrix b,TSMatrix &c)
{
    int i,j;
    ElemType va,vb,vc;
    if (a.rows!=b.rows || a.cols!=b.cols)
        return false;                        //行數或列數不等時不能進行相加運算
    c.rows=a.rows;
    c.cols=a.cols;       //c的行列數與a的相同
    c.nums=0;
    for(i=0; i<M; i++)
        for(j=0; j<N; j++)
        {
            Assign(a,va,i,j);
            Assign(b,vb,i,j);
            vc=va+vb;
            if(vc)
                Value(c,vc,i,j);
        }
    return true;
}


int main()
{
    TSMatrix ta,tb,tc;
    int A[M][N]=
    {
        {0,0,1,0,0,0,0},
        {0,2,0,0,0,0,0},
        {3,0,0,0,0,0,0},
        {0,0,0,5,0,0,0},
        {0,0,0,0,6,0,0},
        {0,0,0,0,0,7,4}
    };
    int B[M][N]=
    {
        {0,0,10,0,0,0,0},
        {0,0,0,20,0,0,0},
        {0,0,0,0,0,0,0},
        {0,0,0,50,0,0,0},
        {0,0,20,0,0,0,0},
        {0,0,0,10,0,0,4}
    };
    CreatMat(ta,A);
    CreatMat(tb,B);
    printf("A:\n");
    DispMat(ta);
    printf("B:\n");
    DispMat(tb);
    if(MatAdd(ta, tb, tc))
    {
        printf("A+B:\n");
        DispMat(tc);
    }
    else
    {
        printf("相加失敗\n");
    }
    return 0;
}


執行結果: