第九周 專案三 (2)兩個稀疏矩陣相加的運算

2021-07-24 02:56:28 字數 1395 閱讀 9204

問題描述及**:

/*   

*煙台大學計控學院

*作 者:邊朔

*完成日期:2023年10月27日

*問題描述:提示1:兩個行數、列數相同的矩陣可以相加

提示2:充分利用已經建立好的演算法庫解決問題

*/

#include #include "tup.h"

int main()

, ,,,

,};int b[m][n]=,,

,,,};

creatmat(ta,a);

creatmat(tb,b);

printf("a:\n");

dispmat(ta);

printf("b:\n");

dispmat(tb);

if(matadd(ta, tb, tc))

else

return 0;

}#include "stdio.h"

#include "tup.h"

void creatmat(tsmatrix &t,elemtype a[m][n]) //從乙個二維稀疏矩陣建立其三元組表示

t.data[k].r=i;

t.data[k].c=j;

t.data[k].d=x;

t.nums++;

}return true; //成功時返回true

}bool assign(tsmatrix t,elemtype &x,int i,int j) //將指定位置的元素值賦給變數

void dispmat(tsmatrix t) //輸出三元組

{ int i;

if (t.nums<=0) //沒有非零元素時返回

return;

printf("\t%d\t%d\t%d\n",t.rows,t.cols,t.nums);

printf("\t------------------\n");

for (i=0; i

執行結果:

知識點總結:

對比兩種方案,「參考解答1」利用assign和value兩個基本運算的方案,可以在只知道「矩陣加法是對應位置的元素相加」的基礎上就可以求解;而「參考解答2」則不得不關注在資料儲存層面的細節,以致於矩陣加法的規則都不容易看出來了。「參考解答2」中繁雜的**,違反了程式設計中諸多的原則(例如模組化),相對「參考解答1」的簡潔中透出的優雅,該不是學習者效仿的思維。

第九周專案6 稀疏矩陣相加

問題及 03.all right reserved.04.檔名稱 稀疏矩陣的相加 cpp 06.完成日期 2016年10月27日 07.版本號 v1.0 08.09.問題描述 採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 10.提示1 兩個行數 列數相同的矩陣可以相加 11.提示2 充分...

第九周上機實踐 專案3(2) 兩個稀疏矩陣相加

檔名稱 test.cpp 完成日期 2015年11月1日 版本 v1.0 問題描述 採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 輸入描述 輸入兩個稀疏矩陣 程式輸出 輸出相加結果 1.標頭檔案 tup.h,包含定義稀疏矩陣的三元組表示資料結構的 巨集定義 要實現演算法的函式的宣告 if...

第九周專案3(2) 矩陣相加

煙台大學計控學院 作 者 鄒曉琳 完成日期 2015年10月23日 問題描述 提示1 兩個行數 列數相同的矩陣可以相加 提示2 充分利用已經建立好的演算法庫解決問題 include include tup.h int main int b m n creatmat ta,a creatmat tb,...