小山日志
读书,学习与思考.
posts - 9,comments - 14,trackbacks - 0
同学找我帮忙写的,要求:
矩阵相乘,纯C编写。
不能用C++这点让我十分郁闷啊^_^....
一共包含如下东西:
typedef struct _matrix2D matrix2D; //一个结构体类型matrix2D

BOOL initMatrix(matrix2D
* pm, int h, int w); //初始化pm为h×w的零矩阵
void delMatrix(matrix2D* pm);  //矩阵的内部数据空间全部是动态分配的,所以退出之前一定要删除矩阵
int getData(matrix2D* pm, int x, int y);  //返回矩阵pm,坐标为x、y的元素值
void setData(matrix2D* pm, int x,int y, int data);   //将矩阵pm,坐标为x、y的元素值置为data
void setMatrix(matrix2D* lhs, matrix2D* rhs);  //删除矩阵lhs原先的值,并深层拷贝为rhs
matrix2D addMatrix(matrix2D* lhs, matrix2D* rhs);  //矩阵相加,返回一个新的矩阵
matrix2D mulMatrix(matrix2D* lhs, matrix2D* rhs);  //矩阵相乘,返回一个新的矩阵
void printMatrix(matrix2D* pm);  //格式化打印矩阵pm

这是一个测试程序,简单相乘两个矩阵:
#include "matrix2d.h"

int main()
{
    
int i,j;
    matrix2D  rhs;
    matrix2D  lhs;
    matrix2D  result;

    initMatrix(
&lhs, 1110);
    initMatrix(
&rhs, 102);

        
//lhs矩阵设置元素值
    for(i = 0; i<11; i++){
        
for(j = 0; j<10; j++){
            setData(
&lhs, i, j, 1);
        }

    }

        
//rhs矩阵设置元素值
    for(i = 0; i<10; i++){
        
for(j = 0; j<2; j++){
            setData(
&rhs, i, j, i+1);
        }

    }

        
//矩阵相乘
    result = mulMatrix(&lhs, &rhs);
        
//打印三个矩阵
    printMatrix(&lhs);
    printMatrix(
&rhs);
    printMatrix(
&result);
        
//不用了,记得释放矩阵空间..
    delMatrix(&lhs);
    delMatrix(
&rhs);
    delMatrix(
&result);
}

这里是显示结果:

点击这里下载完整的源代码和运行程序。
posted on 2006-12-07 17:06 小山日志 阅读(1051) 评论(4)  编辑 收藏 引用 所属分类: the others

FeedBack:
# re: 纯C编写的矩阵工具包
2006-12-08 09:16 | pengkuny
C++很容易啊,真的,认真的话三天可以大概掌握  回复  更多评论
  
# re: 纯C编写的矩阵工具包
2006-12-08 23:20 | 小山日志
谢谢pengkuny^_^,偶还是会一些C++的(只是没你那么厉害三天就掌握了)。
这个是给机械学院同学写的,他只有些Fortran的基础。。。  回复  更多评论
  
# re: 纯C编写的矩阵工具包
2007-01-01 12:36 | chenger
三天掌握C++?梦呓吧  回复  更多评论
  
# re: 纯C编写的矩阵工具包
2007-03-21 15:04 | 717811
@pengkuny
三天?
呵呵,开玩笑!
根本不可能  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理