返回顶部

收藏

矩阵乘法

更多
/* 
  矩阵的乘法 :规定 只有当第一个矩阵的列数等于第二个矩阵
的行数时,两个矩阵才能相乘. 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-08-08 12:12:47sudoku求解数独 by aiheng1988
  2. 2014-08-19 12:16:38C++实例解析哈夫曼树 by 跳跳虎
  3. 2014-10-03 12:29:24优先队列 by 跳跳虎
  4. 2014-10-07 10:00:21快速排序 by 跳跳虎
  5. 2014-11-13 20:30:25C++算法之大数加法计算 by 童学芬
  6. 2013-07-25 21:20:53二叉树深度优先遍历说明和c++的实现 by 玉开Sir
  7. 2014-02-05 13:32:07C++算法之图的结构 by walker30
  8. 2014-02-16 18:20:02C++解决八皇后问题 by aiheng1988
  9. 2014-03-05 16:11:07C++挑选一组数中最大的N个数 by niutao.linux
  10. 2014-05-13 19:31:43排序算法 by 蟋蟀哥
  11. 2017-12-11 17:37:06表变量,代替临时表 by xuleaper

发表评论