类与对象

#ifndef MATRIX_H
#define MATRIX_H
#include <iostream>
using namespace std;

class Matrix
{
private:
 float * * pm;
 int m,n;
 void FillMatrix();
public:
 Matrix(int x=0,int y=0);
 Matrix(Matrix & mx);
 ~Matrix();
 Matrix operator+(Matrix & x);
 Matrix operator*(Matrix & mx);
 friend ostream & operator<<(ostream & os,Matrix & mx);
};

#endif

#include "matrix.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
Matrix::Matrix(int x,int y)
{
 m=x;
 n=y;
 pm=new float * [m];
 for(int i=0;i<m;i++)
  pm[i]=new float[n];
 FillMatrix();
}
Matrix::Matrix(Matrix & mx)
{
 m=mx.m;
 n=mx.n;
 pm=new float * [m];
 for(int i=0;i<m;i++)
  pm[i]=new float[n];
 for( i=0;i<m;i++)
  for(int j=0;j<n;j++)
   pm[i][j]=mx.pm[i][j];

}
void Matrix::FillMatrix()
{
 //srand(time(NULL));
 for(int i=0;i<m;i++)
  for(int j=0;j<n;j++)
   pm[i][j]=rand()%10;
}
Matrix::~Matrix()
{
 for(int i=0;i<m;i++)
  delete [] pm[i];
 delete [] pm;
}
Matrix Matrix::operator+(Matrix & x)
{
 Matrix temp(m,n);
 for(int i=0;i<m;i++)
  for(int j=0;j<n;j++)
   temp.pm[i][j]=pm[i][j]+x.pm[i][j];
 return temp;
}
Matrix Matrix::operator*(Matrix & mx)
{
 Matrix temp(m,mx.n);
 for(int i=0;i<temp.m;i++)
  for(int j=0;j<temp.n;j++)
  { temp.pm[i][j]=0;
   for(int l=0;l<n;l++)
    temp.pm[i][j]+=pm[i][l]*mx.pm[l][j];
  }
 return temp;


}
ostream & operator<<(ostream & os,Matrix & mx)
{
 for(int i=0;i<mx.m;i++)
 {
  for(int j=0;j<mx.n;j++)
   os<<setw(8)<<mx.pm[i][j];
  os<<endl;
 }
 return os;
}

#include "matrix.h"
#include <ctime>
#include <iostream>
using namespace std;

void main()
{
 srand(time(NULL));
 Matrix mx1(5,2),mx2(2,6),mx3(mx1*mx2);
 cout<<mx1<<endl;
 cout<<mx2<<endl;
 cout<<mx3<<endl;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值