帮忙看下哪里出错了
#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个矩阵元素相同,估计是程序太短,运行太快的缘故二是我重载的*法不成功,程序计算不出来..劳烦大家看一下..给个解决的方法,谢谢.