📄 下三角矩阵.cpp
字号:
#include "iostream.h"
//下三角矩阵压缩存储在一维数组中
//输出下三角矩阵
void mprint(int b[],int n)
{int i,j,k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
if(i>=j)
{ k=i*(i+1)/2+j;
cout<<b[k]<<" ";}
else
{ k=n*(n+1)/2;
if(b[k]!=0) cout<<b[k]<<" ";
else cout<<" ";
}
cout<<endl;
}
cout<<endl;
}
//下三角矩阵加法运算
void shangmatrixadd(int a[],int b[],int c[],int n)
{
int k=n*(n+1)/2;
for(int i=0;i<=k;i++) c[i]=a[i]+b[i];
}
//下三角矩阵减法运算
void shangmatrixsub(int a[],int b[],int c[],int n)
{
int k=n*(n+1)/2;
for(int i=0;i<=k;i++) c[i]=a[i]-b[i];
}
//下三角矩阵倍乘运算
void shangmatrixb(int a[],int p,int c[],int n)
{
int k=n*(n+1)/2;
for(int i=0;i<=k;i++) c[i]=p*a[i];
}
//下三角矩阵乘法运算
void shangmatrixmul(int a[],int b[],int c[],int n)
{
int m=n*(n+1)/2;
int i,j,k,v,p,q;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{if(i>=j) v=i*(i+1)/2+j;
else
v=n*(n+1)/2;
c[v]=0;
for(k=0;k<n;k++)
{if(i>=k) p=i*(i+1)/2+k;
else p=n*(n+1)/2;
if(k>=j)q=k*(k+1)/2+j;
else q=n*(n+1)/2;
c[v]=c[v]+a[p]*b[q];
}
}
}
void main()
{
int a[]={1,2,4,5,6,7,0};
int b[]={9,8,5,7,4,3,0};
int c[20];
mprint(a,3);
mprint(b,3);
/* shangmatrixadd(a,b,c,3);
mprint(c,3);
shangmatrixsub(a,b,c,3);
mprint(c,3);
shangmatrixb(a,4,c,3);
mprint(c,3);*/
shangmatrixmul(a,b,c,3);
mprint(c,3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -