CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

矩阵相乘的问题。

楼主jiyuanjh(天涯)2004-05-04 14:30:36 在 C/C++ / C++ 语言 提问

#include<iostream.h>  
  void   by(int*,int*,int,int,int);  
  void   main()  
  {  
  int   a,b,c,*p,*q;  
  cout<<"请输入前一个矩阵的行数:"<<endl;  
  cin>>a;  
  cout<<"请输入前一个矩阵的列数:"<<endl;  
  cin>>b;  
  cout<<"请输入后一个矩阵的列数:"<<endl;  
  cin>>c;  
  p=new   int[a*b];  
  q=new   int[b*c];  
  int   i,j;  
  cout<<"请输入第一个矩阵的值:"<<endl;  
  for(i=0;i<a;i++)  
  for(j=0;j<b;j++)  
  {  
  cout<<"p["<<i+1<<"]["<<j+1<<"]=";  
  cin>>p[i*a+j];  
  }  
  cout<<"请输入第二个矩阵的值:"<<endl;  
  for(i=0;i<b;i++)  
  for(j=0;j<c;j++)  
  {  
  cout<<"q["<<i+1<<"]["<<j+1<<"]=";  
  cin>>q[i*b+j];  
  }  
  by(p,q,a,b,c);  
  }  
  void     by(int   *p,int   *q,int   m,int   n,int   k)    
  {  
  int   *r=new   int[m*k];  
   
  int   i=0,j=0,h,g,e;  
  for(g=0;g<m;g++)  
  {  
  for(h=0;h<k;h++)  
  {  
  *(r+j)=0;  
              for(e=0;e<n;e++)  
       
  {  
      *(r+j)+=*(p+e+n*g)**(q+h+e*k);    
   
      }  
      if((j+1)%k==0)                                    
        cout<<*(r+j)<<endl;  
              else   cout<<*(r+j)<<"   ";  
  i=0;                                                                          
  j++;                                                                            
   
  }  
  }  
  }  
  不明白程序有错在哪里? 问题点数:0、回复次数:4Top

1 楼sdhls(凌凌叁)回复于 2004-05-04 16:17:49 得分 0

没错呀  
  不过忘了delete   []p;  
  delete   []q;Top

2 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-05-04 17:18:40 得分 0

在网吧小待会儿..没有编译器,,不过我作过一个利用三重循环实现的例子..大概算法是这样的:  
  for(i=0;i<a;i++)  
  {  
        for(j=0;j<b;j++)  
        {      
              Array_c[i][k]=0;  
              for(k=0;k<c;k++)  
                      {  
                            Array_c[i][k]=Array_c[i][k]+Array_a[i][j]*Array_b[j][k];  
                        }  
        }  
  }  
  大概是这个样子了.Top

3 楼cngdzhang()回复于 2004-05-04 17:26:50 得分 0

cin>>p[i*a+j];  
  应该是  
  cin>>p[i*b+j];  
   
  cin>>q[i*b+j];  
  应该是  
  cin>>q[i*c+j];  
   
   
  这是由你的循环决定的  
   
  for(i=0;i<a;i++)  
  for(j=0;j<b;j++)   //内循环是b次    
  {  
  cout<<"p["<<i+1<<"]["<<j+1<<"]=";  
  cin>>p[i*a+j];   //所以这里有问题,应该是cin>>p[i*b+j];  
  }  
   
   
  Top

4 楼cngdzhang()回复于 2004-05-04 17:28:03 得分 0

你可以打印一下你输入的矩阵就知道了:)  
  输入时有问题  
  Top

相关问题

  • 不同大小矩阵相乘
  • 请问如何用c#实现一个矩阵类来做矩阵的求逆和矩阵的相乘?
  • 200分紧急求助!关于多矩阵相乘的问题!
  • 大家我为什么不能实现矩阵相乘啊?
  • 关于double变量与矩阵类相乘的重载问题
  • 请教一个矩阵相乘的问题。。。
  • 有关于矩阵的函数吗?如求协方差,相乘 等
  • 如何用SQL实现类似于矩阵的按位置相乘功能
  • 各位老大,帮帮我了,多个矩阵相乘,如何处理
  • 一个简单的矩阵相乘的算法,调试的时候老出错,请指教啊。

关键词

  • 问题
  • cout
  • 应该是cin

得分解答快速导航

  • 帖主:jiyuanjh

相关链接

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

广告也精彩

反馈

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