17.若某類矩陣的大部分數(shù)據(jù)是相同值(如0)。我們可以采用僅記錄不相同值(如非0數(shù)據(jù))的方式進行壓縮。甲同學對m行n列的該類矩陣進行以下處理:
●利用一維數(shù)組x存儲矩陣:把矩陣第1行到第m行數(shù)據(jù)逐行依次保存在數(shù)組x中,x(1)到x(n)分別存放第1行各個數(shù)據(jù),x(n+1)到x(2*n)分別存放第2行各個數(shù)據(jù),依此類推。
●對數(shù)組x中的數(shù)據(jù)進行壓縮:a(1)~a(3)依次存放矩陣的行數(shù),列數(shù)及數(shù)值0.從數(shù)組x的第1個位置開始往后掃描,僅把非0數(shù)據(jù)所在矩陣中的行號、列號及值保存到a(4)開始的數(shù)組元素中,數(shù)組a各元素含義如圖a所示:
乙同學對數(shù)組a中的數(shù)據(jù)進行轉(zhuǎn)置處理:
●行列轉(zhuǎn)置生成轉(zhuǎn)置矩陣:從第1行到第n行逐行生成轉(zhuǎn)置矩陣,在第i行處理時,掃描數(shù)組a,若轉(zhuǎn)置矩陣當前的行號i等于原矩陣元素的列號a(j)(j=5,8,11…),則把a(j)、a(j-1)及a(j+1)依次保存到數(shù)組b相應位置,即可把原矩陣第a(j-1)行a(j)列的數(shù)據(jù)轉(zhuǎn)置為矩陣第a(j))行a(j-1)列的數(shù)據(jù)。如有3行4列矩陣的轉(zhuǎn)置過程如圖b所示。
(1)若m=4,n=3,矩陣數(shù)據(jù)如圖c所示,則數(shù)組元素a(7)到a(9)的值依次為:
(填數(shù)據(jù),用逗號分隔)
(2)甲、乙同學分別編寫程序?qū)崿F(xiàn)矩陣數(shù)據(jù)壓縮和行列轉(zhuǎn)置。VB代碼如下,請在橫線處填入合適的代碼。