同學(xué)找我?guī)兔懙模螅?br />矩陣相乘,純C編寫。
不能用C++這點(diǎn)讓我十分郁悶啊^_^....
一共包含如下東西:
typedef?struct?_matrix2D?matrix2D;?//一個(gè)結(jié)構(gòu)體類型matrix2D

BOOL?initMatrix(matrix2D*?pm,?int?h,?int?w);?//初始化pm為h×w的零矩陣
void?delMatrix(matrix2D*?pm);??//矩陣的內(nèi)部數(shù)據(jù)空間全部是動(dòng)態(tài)分配的,所以退出之前一定要?jiǎng)h除矩陣
int?getData(matrix2D*?pm,?int?x,?int?y);??//返回矩陣pm,坐標(biāo)為x、y的元素值
void?setData(matrix2D*?pm,?int?x,int?y,?int?data);???//將矩陣pm,坐標(biāo)為x、y的元素值置為data
void?setMatrix(matrix2D*?lhs,?matrix2D*?rhs);??//刪除矩陣lhs原先的值,并深層拷貝為rhs
matrix2D?addMatrix(matrix2D*?lhs,?matrix2D*?rhs);??//矩陣相加,返回一個(gè)新的矩陣
matrix2D?mulMatrix(matrix2D*?lhs,?matrix2D*?rhs);??//矩陣相乘,返回一個(gè)新的矩陣
void?printMatrix(matrix2D*?pm);??//格式化打印矩陣pm這是一個(gè)測(cè)試程序,簡(jiǎn)單相乘兩個(gè)矩陣:
#include?"matrix2d.h"

int?main()


{
????int?i,j;
????matrix2D??rhs;
????matrix2D??lhs;
????matrix2D??result;

????initMatrix(&lhs,?11,?10);
????initMatrix(&rhs,?10,?2);

????????//lhs矩陣設(shè)置元素值

????for(i?=?0;?i<11;?i++)
{

????????for(j?=?0;?j<10;?j++)
{
????????????setData(&lhs,?i,?j,?1);
????????}
????}
????????//rhs矩陣設(shè)置元素值

????for(i?=?0;?i<10;?i++)
{

????????for(j?=?0;?j<2;?j++)
{
????????????setData(&rhs,?i,?j,?i+1);
????????}
????}
????????//矩陣相乘
????result?=?mulMatrix(&lhs,?&rhs);
????????//打印三個(gè)矩陣
????printMatrix(&lhs);
????printMatrix(&rhs);
????printMatrix(&result);
????????//不用了,記得釋放矩陣空間..
????delMatrix(&lhs);
????delMatrix(&rhs);
????delMatrix(&result);
}這里是顯示結(jié)果:

點(diǎn)擊
這里下載完整的源代碼和運(yùn)行程序。
posted on 2006-12-07 17:06
小山日志 閱讀(1096)
評(píng)論(4) 編輯 收藏 引用 所屬分類:
the others