#include <stdio.h>
#include<iostream>
#define N 4
#define M 10
using namespace std;
int value(int a[],int i,int j)
{
if (i>=j)
return a[(i*(i+1))/2+j];
else
return a[(j*(j+1))/2+i];
}
void madd(int a[],int b[],int c[][N]) //做相加运算
{
int i,j;
for (i=0; i<N; i++)
for (j=0; j<N; j++)
c[i][j]=value(a,i,j)+value(b,i,j);
}
void mult(int a[],int b[],int c[][N]) //相乘运算
{
int i,j,k,s;
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{
s=0;
for (k=0; k<N; k++)
s=s+value(a,i,k)*value(b,k,j);
c[i][j]=s;
}
}
void disp1(int a[]) //输出原矩阵
{
int i,j;
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
printf("%4d",value(a,i,j));
printf("\n");
}
}
void disp2(int c[][N]) //输出运算之后的矩阵
{
int i,j;
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
printf("%4d",c[i][j]);
printf("\n");
}
}
int main()
{
int a[M]; //a表示压缩存储的对称矩阵
int b[M];
cout<<"请输入矩阵A:";
for(int i=0;i<M;i++)
cin>>a[i];
cout<<"请输入矩阵B:";
for(int i=0;i<M;i++)
cin>>b[i];
int c1[N][N],c2[N][N];
madd(a,b,c1);
mult(a,b,c2);
printf("A矩阵:\n");
disp1(a);
printf("B矩阵:\n");
disp1(b);
printf("A+B:\n");
disp2(c1);
printf("A×B:\n");
disp2(c2);
printf("\n");
return 0;
}
对称矩阵的实现与应用(相加、相乘)
最新推荐文章于 2024-07-17 08:29:57 发布