返回顶部

收藏

矩阵乘法

更多
/* 
  矩阵的乘法 :规定 只有当第一个矩阵的列数等于第二个矩阵
的行数时,两个矩阵才能相乘. 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. leaver 发表 2013-05-31 07:05:29 邻接表实现无向图(C++)
  2. wysaid 发表 2014-05-23 10:15:47 [EGE Net]跟风做个小demo,网格自由变化~
  3. 陆离 发表 2014-10-28 08:01:58 LeetCode OJ: Restore IP Addresses
  4. dianlujitao 发表 2013-10-31 01:04:46 搬运树苗 二分+贪心
  5. dianlujitao 发表 2013-10-14 14:23:32 数字游戏 动态规划 解题报告
  6. leaver 发表 2013-06-02 07:44:22 阿里巴巴5月5日综合算法题详解
  7. dianlujitao 发表 2014-10-16 14:11:10 CodeForces 23A You’re Given a String…
  8. dianlujitao 发表 2013-10-14 02:23:16 WIKIOI 1501 二叉树最大宽度和高度
  9. dianlujitao 发表 2014-10-17 13:14:36 CodeForces 23B Party
  10. dianlujitao 发表 2014-10-17 13:32:08 POJ 2339 Rock, Scissors, Paper
  11. bystander 发表 2013-04-11 10:50:25 模板栈以及中缀表达式求值(C++实现)
  12. dianlujitao 发表 2014-10-17 13:42:33 POJ 3844 Divisible Subsequences

发表评论