CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

一个简单的矩阵相乘的算法,调试的时候老出错,请指教啊。

楼主love_c2004(c++新生)2005-06-20 09:11:03 在 C/C++ / C++ 语言 提问

-----算法内容如下:---------------------------------  
   
  #include   <iostream.h>  
  #include   <stdlib.h>  
  /*  
  函数功能:矩阵乘法   实现   c[m][p]   =   a[m][n]*b[n][p]    
  */  
  template   <class   T>  
  void   Mult(T   **a,T   **b,T   **c,int   m,int   n,int   p){  
      for(int   i=0;i<m;i++){  
          for(int   j=0;j<p;j++){  
              T   sum   =   0;  
              for(int   k=0;k<n;k++){  
                  sum   +=a[i][k]*b[k][j];  
              }  
              c[i][j]   =   sum;  
          }  
      }  
  }  
   
  void   main(){  
      int   arr[3][3]   =   {{1,0,0},{0,1,0},{0,0,1}};  
      int   brr[3][2]   =   {{1,2},{3,1},{0,1}};  
      int   crr[3][2];  
      Mult(arr,brr,crr,3,2,3);  
      for(int   i=0;i<3;i++){  
          for(int   j=0;j<2;j++){  
              cout   <<crr[i][j]   <<"   "   <<endl;  
          }  
      }  
      system("pause");  
  }  
  --------------------------------------------  
  出错信息:23   C:\Documents   and   Settings\Administrator\My   Documents\c++\Mult.cpp  
  no   matching   function   for   call   to   `Mult   (int[3][3],   int[3][2],   int[3][2],   int,   int,   int)'  
  问题点数:20、回复次数:4Top

1 楼boxban(冻酸梨)回复于 2005-06-20 09:29:05 得分 0

#include   <iostream>  
  #include   <cstdlib>  
   
  using   namespace   std;  
   
  /*  
  函数功能:矩阵乘法   实现   c[m][p]   =   a[m][n]*b[n][p]    
  */  
  template   <class   T,   int   M,   int   N,   int   P>  
  void   Mult(T   (*a)[M],   T   (*b)[P],   T   (*c)[P]){  
      for(int   i=0;i<M;i++){  
          for(int   j=0;j<P;j++){  
              T   sum   =   0;  
              for(int   k=0;k<N;k++){  
                  sum   +=a[i][k]*b[k][j];  
              }  
              c[i][j]   =   sum;  
          }  
      }  
  }  
   
  void   main(){  
      int   arr[3][3]   =   {{1,0,0},{0,1,0},{0,0,1}};  
      int   brr[3][2]   =   {{1,2},{3,1},{0,1}};  
      int   crr[3][2];  
      Mult<int,   3,   3,   2>(arr,   brr,crr);  
      for(int   i=0;i<3;i++){  
          for(int   j=0;j<2;j++){  
              cout   <<crr[i][j]   <<"   "   ;  
          }  
          cout   <<   endl;  
      }  
      system("pause");  
  }  
   
  Top

2 楼mccxj(老鼠不逛街)回复于 2005-06-20 09:35:00 得分 20

让人给抢了。。。  
  ----------------  
  void   Mult(T   **a,T   **b,T   **c,int   m,int   n,int   p)  
  不可以先一维一样进行声明,如void   fun(T   *a);  
  因为多维数组只有1维可以只有做。。可以改成(*a)[m]之类的东西。。Top

3 楼5420(薰衣草)回复于 2005-06-20 09:36:10 得分 0

楼上正解!Top

4 楼love_c2004(c++新生)回复于 2005-06-20 09:58:50 得分 0

谢谢各位的解答!  
   
  另外想问问,   mccxj(爱逛街的老鼠关注基础学习《C和指针》  
   
  不大明白您的解释啊。。可以详细说说吗。。。谢谢了。。Top

相关问题

  • 矩阵运算算法?
  • 旋转矩阵的算法???
  • 不同大小矩阵相乘
  • 多项式的相乘的算法
  • 求:复数矩阵算法库
  • 哪有旋转矩阵的算法
  • 求N阶逆矩阵求解算法
  • 请问如何用c#实现一个矩阵类来做矩阵的求逆和矩阵的相乘?
  • 200分紧急求助!关于多矩阵相乘的问题!
  • 大家我为什么不能实现矩阵相乘啊?

关键词

  • 矩阵
  • include

得分解答快速导航

  • 帖主:love_c2004
  • mccxj

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo