返回顶部

收藏

矩阵乘法

更多
/* 
  矩阵的乘法 :规定 只有当第一个矩阵的列数等于第二个矩阵
的行数时,两个矩阵才能相乘. m*n矩阵 乘以n*k矩阵结果为一个m*k的矩阵 

*/
#include<iostream>
using namespace std;

void Dispaly(int a[][30],int row,int col);   //矩阵元素显示函数
void Input(int a[][30],int row,int col);  //矩阵输入函数 
void Fuck(int sum[][30],int a[][30],int b[][30],int row,int col); //矩阵乘法 

int main()
{

    int a[30][30];
    int b[30][30];
    int sum[30][30];
    int row1,col1,col2; 
    while (1)
    { 
        cout<<"请输入第一个矩阵的行和列数:";
        cin>>row1;
        cin>>col1;
        Input(a,row1,col1);

        cout<<"第二个矩阵的行数已为"<<col1<<",请在输入列数:"<<endl;
        cin>>col2;
        Input(b,col1,col2); 

        cout<<"乘矩阵如下:"<<endl;
        Dispaly(a,row1,col1);
        cout<<"被乘矩阵如下:"<<endl;
        Dispaly(b,col1,col2);

        Fuck(sum,a,b,row1,col2);          
        cout<<"两矩阵的乘积为:"<<endl;
        Dispaly(sum,row1,col2);

    }
    system("pause");
    return 0;
}
//////////////////////////////////////////
void Input(int a[][30],int row,int col)  //矩阵输入函数
{
     int i,j;
     cout<<"请输入矩阵元素:"<<endl;
     for (i=0; i<row; i++)
     {
         for (j=0; j<col; j++)
         {
             cin>>a[i][j]; 
         }
     } 
}
//////////////////////////////////////////
void Dispaly(int a[][30],int row,int col)   //矩阵元素显示函数
{
     int i,j;

     for (i=0; i<row; i++)
     {
         for (j=0; j<col; j++)
         {
             cout<<a[i][j]<<"  ";
         }
         cout<<endl;
     }
}
////////////////////////////////////////////
void Fuck(int sum[][30],int a[][30],int b[][30],int row,int col) //矩阵乘法
{
     int i,j,h;
     int k = 0;

     int temp ;
     int mysum  = 0;
     for (i=0; i<row; i++)            //row 为乘矩阵的行数 
     {
         for (j=0; j<col; j++)       //col为被乘矩阵的列数 
         {
             for (h=0; h<col; h++)
             {
               temp =  a[i][h]*b[h][j];       //行乘以列 
               mysum  = mysum+temp;                   //行乘以列之和
             } 
             sum[i][k] = mysum;
             mysum = 0;
             k++; 

             if (k==col)
             {
                 k = 0;
             }
         }
     }
}
//该片段来自于http://outofmemory.cn

标签:c++,算法

收藏

0人收藏

支持

0

反对

0

»更多 您可能感兴趣的代码
  1. 2014-10-22 13:04:13A星算法 by 灵剑子
  2. 2014-12-06 11:00:26词法分析 by 童学芬
  3. 2012-11-03 19:21:55c语言实现顺序查找和二分查找的示例 by 林峰
  4. 2012-12-06 21:23:15c++大数阶乘算法 by zetaliang
  5. 2012-12-20 13:30:20伪造硬币问题 by 傅小黑
  6. 2013-07-27 15:09:08C++顺序表操作代码演示 by qqmmcc
  7. 2014-04-05 14:40:50C++算法之可变参数 by 童学芬
  8. 2014-05-18 11:40:55KMP字符串匹配算法 by 童学芬
  9. 2014-05-19 15:46:15高效素数筛法 by lucasli
  10. 2014-05-20 12:48:01线性表之顺序表 by 千万不要郁闷
  11. 2014-05-22 13:29:39递归题改为非递归题实例 by lucasli
相关聚客文章
  1. leaver 发表 2013-06-02 07:44:22 阿里巴巴5月5日综合算法题详解
  2. dianlujitao 发表 2014-10-16 14:11:10 CodeForces 23A You’re Given a String…
  3. dianlujitao 发表 2014-10-17 13:14:36 CodeForces 23B Party
  4. dianlujitao 发表 2014-10-17 13:32:08 POJ 2339 Rock, Scissors, Paper
  5. bystander 发表 2013-04-11 10:50:25 模板栈以及中缀表达式求值(C++实现)
  6. dianlujitao 发表 2014-10-17 13:42:33 POJ 3844 Divisible Subsequences
  7. dianlujitao 发表 2014-10-17 13:45:25 POJ 3122 Pie
  8. bystander 发表 2013-04-16 00:42:58 模板优先级队列及堆排序(C++实现)
  9. dianlujitao 发表 2014-10-17 13:52:22 POJ 2388 Who’s in the Middle
  10. surgesoft 发表 2014-10-28 08:01:58 LeetCode OJ: Restore IP Addresses
  11. espace 发表 2015-07-18 17:43:14 Two Sum
  12. abyssss 发表 2014-05-20 03:23:39 数据结构 最小堆 数组实现

发表评论