标题:帮忙看下哪里出错了
取消只看楼主
endless
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-8-3
 问题点数:0 回复次数:1 
帮忙看下哪里出错了
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<iostream>
using namespace std ;



class Matrix
{
public:
 Matrix(int,int);         //构造函数
 bool initialize(int,int);  //矩阵初始化
 bool create();             //矩阵的生成
 void output();             //输出矩阵各元素
 
 Matrix operator *(Matrix &M2); //重载矩阵与矩阵乘法运算
 double  average();//求矩阵的均值
private:
 int m_row;       //矩阵行数
 int m_col;       //矩阵列数
 double *m_pData;  //使用指针指向矩阵各元素
};
//构造函数
Matrix::Matrix(int r,int c)
{
  initialize(r,c);
}
//矩阵初始化函数
bool Matrix::initialize(int r,int c)
{
   m_row=r;
   m_col=c;
   m_pData=new double[r*c];
   for(int i=0;i<m_row*m_col;i++)
   {
      m_pData[i]=0;
   }
   return true;
}
//生成矩阵数据元素,创建新矩阵
bool Matrix::create()
{
  m_pData=new double[m_row*m_col];
 srand( (unsigned)time( NULL ) );
  for(int i=0;i<m_row*m_col;i++)
  {
     m_pData[i]=rand()%100+1;
      
  }
 return true;
}
//矩阵输出函数
void Matrix::output()
{
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      cout<<m_pData[i]<<" ";
   j++;
   if(j==m_col) {j=0;cout<<"\n";}
   }
}
//重载矩阵与矩阵乘法运算
Matrix Matrix::operator *(Matrix &M2)
{
   Matrix M=*this;
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      M.m_pData[i]=m_pData[i]*M2.m_pData[i+j*m_col];
      j++;
   if(j==M2.m_row) j=0;
   }
   return M2;
}
double  Matrix ::average()
{  double  sum=0,a_average=0 ; Matrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
       sum=M.m_pData[i]+sum ;
       a_average=sum/(m_row*m_col) ;
       return   a_average ;
 
}





int main()
{
   Matrix a(2,2),b(2,2),c(2,2) ,d(2,2);
   a.create();
   a.output();
   cout<<"该矩阵的均值为  "<<a.average()<<endl;
   b.create();
   b.output();
   cout<<"该矩阵的均值为  "<<b.average()<<endl;
   c.create();
   c.output();
   cout<<"a,b两矩阵相乘的结果为"<<endl;
   c=b*a ;
   c.output();
 }
我这里有2个问题,一是rand()生成的3个矩阵元素相同,估计是程序太短,运行太快的缘故二是我重载的*法不成功,程序计算不出来..劳烦大家看一下..给个解决的方法,谢谢.
搜索更多相关主题的帖子: 矩阵 double private average include 
2008-08-12 09:19
endless
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-8-3
得分:0 
回复 3# elegant87 的帖子
根据你提供的方法改过了程序。
     运行是出现了一个警告如下:
 warning C4715: 'Matrix::operator*' : not all control paths return a value  
 计算出来的数值并不正确.能再帮我看一下吗,谢谢.
2008-08-12 17:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-227796-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved