64,639
社区成员
发帖
与我相关
我的任务
分享
matrix operator* (matrix & m, matrix & n)
{
int d[3][3];
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
{
for(int r=0;r<c;r++)
d[i][j]=m.a[i][r]*n.a[r][j];
}
return matrix(d);
}
#include <iostream>
using namespace std;
const int r=3;
const int c=3;
const int k=3;
class matrix
{
int a[r][c];
public:
matrix() {}
matrix(int t[r][c])
{
for (int i=0; i<r; i++)
for(int j=0; j<c; j++)
a[i][j]=t[i][j];
}
friend matrix operator+ (matrix & a, matrix & b); //矩阵加
friend matrix operator- (matrix & a, matrix & b); //矩阵减
friend matrix operator* (matrix & a, matrix & b); //矩阵乘
friend matrix operator~ (matrix & a); //矩阵转置
void display();
}; //注意分号
matrix operator +(matrix & a, matrix & b) //分号去掉
{
matrix ret;
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
ret.a[i][j] = a.a[i][j] + b.a[i][j];
return ret;
}
matrix operator -(matrix & a, matrix & b)
{
matrix ret;
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
ret.a[i][j] = a.a[i][j]-b.a[i][j];
return ret;
}
matrix operator* (matrix & a, matrix & b)
{
matrix ret;
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
{
ret.a[i][j]=0;
for(int l=0; l<k; l++)
ret.a[i][j] = a.a[i][j] + b.a[i][j];
}
return ret;
}
matrix operator~ (matrix & a)
{
matrix ret;
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
ret.a[j][i] = ~a.a[i][j];
return ret;
}
void matrix::display()
{
for(int i=0; i<r; i++)
{
for(int j=0; j<c; j++)
cout<< this->a[i][j] << " ";
cout << endl;
}
}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int b[3][3]={1,2,3, 0,1,2, -1,0,1};
matrix x(a);
matrix y(b);
cout<<"-------- x= ------------"<<endl;
x.display(); //按设定格式显示出第一个矩阵
y.display(); //按设定格式显示出第二个矩阵
(x+y).display(); //输出结果矩阵 x+y
cout<<"--------- x-y= ---------"<<endl;
(x-y).display(); //输出结果矩阵x-y
cout<<"--------- x*y= ---------"<<endl;
(x*y).display(); //输出结果矩阵x*y
cout<<"--------- ~x= ---------"<<endl;
(~x).display(); //输出结果矩阵~x
system("PAUSE");
}
#include <iostream>
#include <stdio.h>
#include <iostream>
using namespace std;
const int r=3; const int c=3; const int k=3;
class matrix
{
int a[r][c];
public:
matrix(){}
matrix(int t[3][3])
{
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
a[i][j] = t[i][j];
}
friend matrix operator+ (matrix & a, matrix & b); //矩阵加
friend matrix operator- (matrix & a, matrix & b); //矩阵减
//friend matrix operator* (matrix & a, matrix & b); //矩阵乘
friend matrix operator~ (matrix & a); //矩阵转置
void display();
};
matrix operator +(matrix & m, matrix & n)
{
int d[3][3];
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
d[i][j]=m.a[i][j]+n.a[i][j];
return matrix(d);
}
matrix operator -(matrix & m, matrix & n)
{
int d[3][3];
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
d[i][j]=m.a[i][j]-n.a[i][j];
return matrix(d);
}
//matrix operator* (matrix & m, matrix & n)
//{
//
// int d[3][3];
//for(int i=0;i<r;i++)
//for(int j=0;j<c;j++)
//{
// d[i][j]=m.a[i][j]*n.a[i][j];
//
//}
matrix operator~ (matrix & n)
{
int d[3][3];
for(int i=0;i<k;i++)
for(int j=0;j<c;j++)
d[j][i]=n.a[i][j];
return matrix(d);
}
void matrix::display()
{
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
cout<<a[i][j]<<endl;
}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int b[3][3]={1,2,3, 0,1,2, -1,0,1};
matrix x(a), y(b);
matrix z;
cout<<"-------- x= ------------"<<endl;
x.display(); //按设定格式显示出第一个矩阵
cout<<"-------- y= ------------"<<endl;
y.display(); //按设定格式显示出第二个矩阵
cout<<"--------- x+y= ---------"<<endl;
z = x+y;
z.display(); //输出结果矩阵 x+y
cout<<"--------- x-y= ---------"<<endl;
z = x-y;
z.display(); //输出结果矩阵x-y
cout<<"--------- x*y= ---------"<<endl;
cout<<"--------- ~x= ---------"<<endl;
z = ~x;
(~x).display(); //输出结果矩阵~x
}
给你个能运行的,不过 矩阵乘那块,你的实现有点问题,我给你注掉了,我刚才看了,这个可以正常运行
楼主给分吧
#include <iostream>
#include <stdio.h>
#include <iostream>
using namespace std;
const int r=3; const int c=3; const int k=3;
class matrix
{
int a[r][c];
public:
matrix(){}
matrix(int t[3][3])
{
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
a[i][j] = t[i][j];
}
friend matrix operator+ (matrix & a, matrix & b); //矩阵加
friend matrix operator- (matrix & a, matrix & b); //矩阵减
friend matrix operator* (matrix & a, matrix & b); //矩阵乘
friend matrix operator~ (matrix & a); //矩阵转置
void display();
};
matrix operator +(matrix & a, matrix & b)
{
int d[3][3];
for (int i=0;i<r;i++)
for(int j=0;j<c;j++)
d[i][j]=a[i][j]+b[i][j];
return matrix(d);
}
matrix operator -(matrix & a, matrix & b)
{
int d[3][3];
for (i=0;i<r;i++)
for(j=0;j<c;j++)
d[i][j]=a[i][j]-b[i][j];
return matrix(d);
}
matrix operator+ (matrix & a, matrix & b)
{
int d[3][3];
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
{
d[i][j]=a[i][j]+b[i][j];
}
return matrix(d);
}
matrix operator~ (matrix & a)
{
int d[3][3];
for(int i=0;i<k;i++)
for(int j=0;j<c;j++)
d[j][i]=a[i][j];
return matrix(d);
}
void matrix::display()
{
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
cout<<a[i][j]<<endl;
}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int b[3][3]={1,2,3, 0,1,2, -1,0,1};
matrix x(a), y(b);
matrix z;
cout<<"-------- x= ------------"<<endl;
x.display(); //按设定格式显示出第一个矩阵
cout<<"-------- y= ------------"<<endl;
y.display(); //按设定格式显示出第二个矩阵
cout<<"--------- x+y= ---------"<<endl;
z = x+y;
z.display(); //输出结果矩阵 x+y
cout<<"--------- x-y= ---------"<<endl;
z = x-y;
z.display(); //输出结果矩阵x-y
cout<<"--------- x*y= ---------"<<endl;
z = x*y;
z.display(); //输出结果矩阵x*y
cout<<"--------- ~x= ---------"<<endl;
z = ~x;
(~x).display(); //输出结果矩阵~x
}