编写程序,求出两个4x4的矩阵A与B的和及差,并按矩阵形式输出。进一步考虑求出矩阵A与B的乘积(c++)

如题所述

#include<stdio.h>
#include<stdlib.h>
int i,j,k,m1,m2,n1,n2;
int a[100][100],b[100][100],c[100][100]={0};
int main()
{ printf("input 01 m1*n1:\n");
scanf("%d %d",&m1,&n1);
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
{scanf("%d",&a[i][j]);}

printf("input 01 m2*n2:\n");
scanf("%d %d",&m2,&n2);
for(i=0;i<m2;i++)
for(j=0;j<n2;j++)
{scanf("%d",&b[i][j]);}

for(i=0;i<m1;i++)
for(j=0;j<n2;j++)
{ for(k=0;k<n1;k++)
c[i][j]+=a[i][k]* b[k][j];
}
printf("resurt:\n");
for(i=0;i<m1;i++)
{ for(j=0;j<n2;j++)
printf("%3d",c[i][j]);
printf("\n");
}
system("pause");
return 0;
}
我写的是矩阵乘积,会乘积就肯定会加减了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-12
#include<iostream>
using namespace std;

class Matrix
{
private:
double data[4][4];
public:
Matrix(){}
friend istream &operator>>(istream &is, Matrix &m); 
friend ostream &operator<<(ostream &out, const Matrix &m);
Matrix &operator+(const Matrix &m)const;
Matrix &operator-(const Matrix &m)const;
Matrix &operator*(const Matrix &m)const;
};

int main()
{
Matrix a,b;
cin>>a>>b;
cout<<a+b<<a-b<<a*b;
return 0;
}

istream &operator>>(istream &is, Matrix &m)
{
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
is>>m.data[i][j];
}
}
}

ostream &operator<<(ostream &out, const Matrix &m)
{
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
out<<m.data[i][j]<<' ';
}
out<<endl;
}
}

Matrix &Matrix::operator+(const Matrix &m)const
{
Matrix *ans = new Matrix;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
ans->data[i][j] = data[i][j] + m.data[i][j];
}
}
return *ans;
}

Matrix &Matrix::operator-(const Matrix &m)const
{
Matrix *ans = new Matrix;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
ans->data[i][j] = data[i][j] - m.data[i][j];
}
}
return *ans;
}

Matrix &Matrix::operator*(const Matrix &m)const
{
Matrix *ans = new Matrix;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
ans->data[i][j] = 0;
for(int k = 0; k < 4; k++)
{
ans->data[i][j] += (data[i][k]*data[k][j]);
}
}
}
return *ans;
}

相似回答