当前位置:文档之家› 数据结构实验(矩阵的运算)

数据结构实验(矩阵的运算)

cin>>x2[i][j];
cout<<"相乘后:"<<endl;
//相乘运算
double **r=new double *[a1];
for(int i=0;i<a1;i++)
r[i]=new double[b2];
for(int q=0;q<a1;q++)
for(int w=0;w<b2;w++)
{
delete []x1[i];
delete []r[i];
}
for(int i=0;i<a2;i++)
delete []x2[i];
delete x1;x1=0;
delete x2;x2=0;
delete r;r=0;
}
算法的选择:switch(c)
{
case 1:Addition();break;
x2[i]=new double[b2];
cout<<"输入第二个矩阵:\n";
for(int i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
cout<<"相加后:"<<endl;
矩阵的加法:for(int i=0;i<a1;i++)
{
for(int j=0;j<b1;j++)
3.倘若选择加(减)法,若两个矩阵的行、列数不相等的话,软件会报错
4.注意输入矩阵的每一个成员是要以空格(space)键隔开。
5.依次输入完两个矩阵成员后,按下回车键,结果将出现显示屏。
附录:
#include <iostream.h>
//矩阵加法
void Addition()
{
int a1,b1,a2,b2;
Multiplication()实现两个任意矩阵的乘法运算
Main()主函数
主要
矩阵的构建:int a1,b1,a2,b2;
double **x1,**x2;
cout<<"输入第一个行数,列数:";
cin>>a1>>b1;
cout<<"输入第二个行数,列数:";
cin>>a2>>b2;
if(a1!=a2 ||b1 !=b2)
cout<<"\t(1)矩阵加法\n\t(2)矩阵减法\n\t(3)矩阵乘法\n\t(0)退出"<<endl;
cout<<"***************************\n";
for(int i=0;i<a1;i++)
x1[i]=new double [b1]; //为x1的每个元素动态分配数组空间
cout<<"输入第一个矩阵:\n";
forห้องสมุดไป่ตู้int i=0;i<a1;i++)
for(int j=0;j<b1;j++)
cin>>x1[i][j];
//分配地址空间
x2=new double *[a2]; //x2[][]
{
r[q][w]=0;
for(int j=0;j<b1;j++)
r[q][w]+=x1[q][j]*x2[j][w];
}
//输出相乘后结果
for(int q=0;q<a1;q++)
{
for(int w=0;w<b2;w++)
{
cout<<r[q][w]<<"\t";
}
cout<<endl;
}
for(int i=0;i<a1;i++)
for(int i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"输入第二个矩阵:\n";
for(int i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
cout<<"相加后:"<<endl;
//相加运算
for(int i=0;i<a1;i++)
for(int j=0;j<b1;j++)
cin>>x1[i][j];
x2=new double *[a2]; //x2[][]
for(int i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"输入第二个矩阵:\n";
for(int i=0;i<a2;i++)
for(int j=0;j<b2;j++)
{
cout<<"无法相加!"<<endl;return;
}
/**************分配地址空间********************/
x1=new double *[a1]; //x1[][],动态分配指针数组
for(int i=0;i<a1;i++)
x1[i]=new double [b1]; //为x1的每个元素动态分配数组空间
if(b1!=a2)
{
cout<<"无法相乘!"<<endl;return;
}
x1=new double *[a1]; //x1[][]
for(int i=0;i<a1;i++)
x1[i]=new double[b1];
cout<<"输入第一个矩阵:\n";
for(int i=0;i<a1;i++)
cin>>x1[i][j];
x2=new double *[a2]; //x2[][]
for(int i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"输入第二个矩阵:\n";
for(int i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
{
r[q][w]=0;
for(int j=0;j<b1;j++)
r[q][w]+=x1[q][j]*x2[j][w];
}
//输出相乘后结果
for(int q=0;q<a1;q++)
{
for(int w=0;w<b2;w++)
{
cout<<r[q][w]<<"\t";
}
cout<<endl;
}
for(int i=0;i<a1;i++)
{
delete []x1[i];
delete []r[i];
}
for(int i=0;i<a2;i++)
delete []x2[i];
delete x1;x1=0;
delete x2;x2=0;
delete r;r=0;
}
int main()
{
int c=1;
while(c)
{
cout<<"***************************\n";
for(int j=0;j<b1;j++)
cin>>x1[i][j];
x2=new double *[a2]; //x2[][]
for(int i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"输入第二个矩阵:\n";
for(int i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>a2>>b2;
if(b1!=a2)
{
cout<<"无法相乘!"<<endl;return;
}
x1=new double *[a1]; //x1[][]
for(int i=0;i<a1;i++)
x1[i]=new double[b1];
cout<<"输入第一个矩阵:\n";
for(int i=0;i<a1;i++)
delete []x2[i];
}
delete x1;x1=0;
delete x2;x2=0;
}
//矩阵乘法
void Multiplication()
{
相关主题