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

关于一个二维数组的问题。

楼主jiyuanjh(天涯)2004-04-03 23:47:04 在 C/C++ / C语言 提问

#include<iostream.h>  
  #include<string.h>  
    void     by(int   *p,int   *q,int   *r,int   m,int   n,int   k)  
  {  
  int   i,j;  
  for(j=0;j<m*k;j++)  
  {  
  for(i=0;i<n;i++)  
  *(r+j)+=*(p+i)*(*(q+i*k));  
  }  
  if((j+1)%m==0)  
  cout<<*(r+j)<<endl;  
  else   cout<<*(r+j)<<"   ";  
   
   
  }  
  void   main()  
  {  
  int   a[2][3],b[3][4],c[2][4];  
  int   i,j;  
  cout<<"   请输入一个数组:"<<endl;  
  for(j=0;j<2;j++)  
  {  
  for(i=0;i<3;i++)  
          cin>>a[i][j];  
      cout<<endl;  
  }  
  cout<<"请输入另一个数组:"<<endl;  
  for(j=0;j<3;j++)  
  {  
  for(i=0;i<4;i++)  
                  cin>>b[i][j];  
  cout<<endl;  
  }  
   
  cout<<"数组相乘后的结果为:   ";  
  by(a[0],b[0],c[0],2,3,4);  
   
  }  
  请高手帮忙看一下有什么错。 问题点数:50、回复次数:9Top

1 楼bideyore()回复于 2004-04-04 00:28:21 得分 5

呵呵,这句:cin>>b[i][j];变成cin>>b[j][i];  
  两句都是;Top

2 楼happlyman(广瑞)回复于 2004-04-04 00:38:46 得分 10

void     by(int   *p,int   *q,int   *r,int   m,int   n,int   k)  
  {  
  int   i,j;  
  for(j=0;j   <   m*k;j++)  
  {  
  for(i=0;i<   n   *   4;i++)  
  *(r+j)+=*(p+i)*(*(q+i*k));   /////??????  
   
  }  
  if((j+1)%m==0)  
  cout<<*(r+j)<<endl;  
  else   cout<<*(r+j)<<"   ";  
   
   
  }  
  void   main()  
  {  
  int   a[2][3],b[3][4],c[2][4];  
  int   i,j;  
  cout<<"   请输入一个数组:"<<endl;  
  for(j=0;j<2;j++)  
  {  
  for(i=0;i<3;i++)  
          cin>>a[j][i];                 //这里有问题,你用的是a[i][j],哪到哪去了  
      cout<<endl;  
  }  
  cout<<"请输入另一个数组:"<<endl;  
  for(j=0;j<3;j++)  
  {  
  for(i=0;i<4;i++)  
                  cin>>b[i][j];  
  cout<<endl;  
  }  
   
  cout<<"数组相乘后的结果为:   ";  
  by(a[0],b[0],c[0],2,3,4);  
  }  
   
  不明白你是怎么加的,两个大小不等的数组相加又把结果放到另一个大小的数组里,这这这太乱了,从新设计一下吧Top

3 楼rorot(rorot)回复于 2004-04-04 00:43:44 得分 5

^_^  
  楼主修改一下吧  
  Top

4 楼rorot(rorot)回复于 2004-04-04 00:58:02 得分 20

楼主用这个程序干什么?帮你改了  
  -----------------------------  
  #include<iostream.h>  
  #include<string.h>  
   
   
  void     by(int   *p,int   *q,int   *r,int   m,int   n,int   k)  
  {  
  int   i,j;  
  for(j=0;j<m*k;j++)  
  {  
  for(i=0;i<n;i++)  
  *(r+j)+=*(p+i)*(*(q+i*k));  
  }  
  if((j+1)%m==0)  
  cout<<*(r+j)<<endl;  
  else   cout<<*(r+j)<<"   ";  
   
   
  }  
   
  void   main()  
  {  
  int   a[2][3],b[3][4],c[2][4];  
  int   i,j;  
   
  cout<<"请输入一个数组:"<<endl;  
  for(i=0;i<2;i++)  
  {  
  for(j=0;j<3;j++)  
  {  
  cout   <<   "a["   <<   i   <<   "]["   <<   j   <<   "]:   ";  
  cin>>a[i][j];  
  }  
  cout<<endl;  
  }  
   
  cout<<"请输入另一个数组:"<<endl;  
   
  for(i=0;   i<3;   i++)  
  {  
  for(j=0;   j<4;   j++)  
  {  
  cout   <<   "b["   <<   i   <<   "]["   <<   j   <<   "]:   ";  
  cin   >>   b[i][j];  
  }  
  cout   <<   endl;  
  }  
  cout<<"数组相乘后的结果为:   ";  
  by(a[0],b[0],c[0],2,3,4);  
  }  
  Top

5 楼jiyuanjh(天涯)回复于 2004-04-04 09:08:10 得分 0

我想求一个2*3和一个3*4的矩阵的积,并把结果输入到C中,原来没有说清楚,不好意思啊,请大家帮个忙,有急用。分不够再加。Top

6 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-04-04 10:39:22 得分 0

不知道不用你这种算法行不?我觉得这种不好。。。Top

7 楼jiyuanjh(天涯)回复于 2004-04-04 10:52:32 得分 0

我现在知道这样不对,能不能提供一种算法。Top

8 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-04-04 12:09:07 得分 10

其实我想的。也就是用矩阵的乘法法则来计算。我在楼主的程序基础上改了一下。改动的比较大,请见谅,  
   
   
  #include<iostream.h>  
   
   
  void   main()  
  {  
  int   a[2][3],b[3][4],c[2][4];  
   
  cout<<"   请输入一个数组:"<<endl;  
   
   
  for(int   r=0;r<2;r++)  
  {  
  for(int   j=0;j<3;j++)  
  cin>>a[r][j];  
  cout<<endl;  
  }  
   
   
   
  cout<<"请输入另一个数组:"<<endl;  
  for(int   i=0;i<3;i++)  
  {  
  for(int   j=0;j<4;j++)  
  cin>>b[i][j];  
  cout<<endl;  
  }  
   
  for(int   s=0;s<2;s++)     //这里实现矩阵的乘法  
   
   
  for(int   k=0;k<4;k++)  
  {  
  c[s][k]=0;   //因为要存储c中的值,所以每次必须初始化为0;  
  for(int   j=0;j<3;j++)  
  {  
   
   
  c[s][k]=c[s][k]+a[s][j]*b[j][k];  
  }  
   
  }  
   
  }  
  cout<<"数组相乘后的结果为:   "<<endl;  
  for(int   t=0;t<2;t++)  
  {  
  for(int   j=0;j<4;j++)  
  {  
  cout<<c[t][j]<<ends;  
  if(j==3)  
  cout<<endl;         //用来设定输出格式  
  }  
  }  
  cout<<endl;  
   
  }  
   
  也是大家常用的一个算法了,,可能不太符合楼主的需要,另外急于一时,程序写得也极也简陋,凑合着看吧。。  
   
  Top

9 楼jiyuanjh(天涯)回复于 2004-04-04 13:18:28 得分 0

谢谢大家的支持,我自己写了,大家提点意见  
  #include<iostream.h>  
  #include<string.h>  
   
   
  void     by(int   *p,int   *q,int   *r,int   m,int   n,int   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+i+n*g)**(q+h+e*k);  
      i++;  
      }  
      if((j+1)%k==0)  
      cout<<*(r+j)<<endl;  
      else   cout<<*(r+j)<<"   ";  
  i=0;  
  j++;  
   
  }  
  }  
  }  
   
  void   main()  
  {  
  int   a[2][3],b[3][4],c[2][4];  
  int   i,j;  
   
  cout<<"请输入一个2*3的数组:"<<endl;  
  for(i=0;i<2;i++)  
  {  
  for(j=0;j<3;j++)  
  {  
  cout   <<   "a["   <<   i+1   <<   "]["   <<   j+1   <<   "]:   ";  
  cin>>a[i][j];  
  }  
  cout<<endl;  
  }  
   
  cout<<"请输入一个3*4的数组:"<<endl;  
   
  for(i=0;   i<3;   i++)  
  {  
  for(j=0;   j<4;   j++)  
  {  
  cout   <<   "b["   <<   i+1   <<   "]["   <<   j+1   <<   "]:   ";  
  cin   >>   b[i][j];  
  }  
  cout   <<   endl;  
  }  
  cout<<"数组相乘后的结果为:   "<<endl;  
  by(a[0],b[0],c[0],2,3,4);  
   
  }  
  Top

相关问题

  • 二维数组
  • oracle 二维数组
  • 二维数组问题
  • 二维数组的疑惑
  • 动态二维数组?
  • 关于二维数组.
  • java二维数组问题
  • 二维数组排序
  • 关于二维数组的
  • 二维数组赋值

关键词

  • cout
  • include

得分解答快速导航

  • 帖主:jiyuanjh
  • bideyore
  • happlyman
  • rorot
  • rorot
  • newegg2002

相关链接

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

广告也精彩

反馈

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