加载中…
个人资料
seyvlei
seyvlei
  • 博客等级:
  • 博客积分:0
  • 博客访问:133,343
  • 关注人气:32
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

C++实现两矩阵叉乘

(2011-08-22 19:41:43)
标签:

杂谈

分类: c/c++技巧
 今天费尽周折终于完成了一个两矩阵叉乘的程序,虽然程序很小,但很有助于理解二维数组初始化及作形参.由其是可将数组大小做为参数传递.
#include <iostream>
#define M 3
#define N 4
#define P 3
using namespace std;
void getmt(int* m,int r,int c)              //获取矩阵
{
     for(int i=0;i<r;++i)       
    {
            for(int j=0;j<c;++j) cin>>*(m+i*c+j);
    }
    
 }
void showmt(const int* m,int r,int c)      //显示矩阵
{
     for(int i=0;i<r;++i)
     {
             for(int j=0;j<c;++j) cout<<*(m+i*c+j)<<"\t";  
             cout<<endl;     
     }
 }
void mmt(const int* m1,const int* m2,int* m3,int m,int n,int p)
{
     for(int i=0;i<m;++i)                 //叉乘运算
    {
        for(int j=0;j<p;++j)
        {
                for(int k=0;k<n;++k)
                {
                        (*(m3+i*p+j))+=(*(m1+i*n+k))*(*(m2+k*p+j));
                 }
        }
    }
 }
int main(int argc, char *argv[])
{
    int m1[M][N];
    int m2[N][P];
    int m3[M][P];
    memset(m3, 0, sizeof(m3));    //注意不能用int m3[M][P]={0};来初始化为0,这样可能并没有将m3中的元素赋0
    cout<<"为矩阵1输入"<<M<<"*"<<N<<"个数:"<<endl;
    getmt(&m1[0][0],M,N);        //获取矩阵m1
    cout<<"为矩阵2输入"<<N<<"*"<<P<<"个数:"<<endl;
    getmt(&m2[0][0],N,P);        //获取矩阵m2 
    mmt(&m1[0][0],&m2[0][0],&m3[0][0],M,N,P);   //叉乘运算
    cout<<"矩阵1:"<<endl;
    showmt(&m1[0][0],M,N);
    cout<<"矩阵2:"<<endl;
    showmt(&m2[0][0],N,P);
    cout<<"结果:"<<endl;
    showmt(&m3[0][0],M,P);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
后一篇:高斯blur
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    后一篇 >高斯blur
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有