实验题目:
#include <iostream>
using namespace std;
#define N 4
#define M 10
static void input(int n, int a[], int b[])
{
for(int k=0;k<n*(n+1)/2;k++){
cin>>a[k];
}
for(int k=0;k<n*(n+1)/2;k++){
cin>>b[k];
}
}
static 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];
}
static void madd(int a[],int b[],int c[][N])
{
for (int i=0;i<N;i++){
for(int j=0;j<N;j++){
c[i][j]=value(a,i,j)+value(b,i,j);
}
}
}
static void mult(int a[],int b[],int c[][N])
{
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
int sum = 0;
for (int k=0;k<N;k++){
sum=sum+value(a,i,k)*value(b,k,j);
}
c[i][j]=sum;
}
}
}
static void disp1(int a[])
{
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
cout<<value(a,i,j)<<" ";
}
cout<<endl;
}
}
static void disp2(int c[][N])
{
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
cout<<c[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
int n;
cin>>n;
int a[n*(n+1)/2],b[n*(n+1)/2];
int c1[N][N],c2[N][N];
input(n,a,b);
cout<<"两个矩阵之和"<<endl;
madd(a,b,c1);
disp2(c1);
cout<<"两个矩阵之积"<<endl;
mult(a,b,c2);
disp2(c2);
return 0;
}