?? 上三角矩陣.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*(2*n-i+1)/2+j-i;
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*(2*n-i+1)/2+j-i;
else
v=n*(n+1)/2;
c[v]=0;
for(k=0;k<n;k++)
{if(i<=k) p=i*(2*n-i+1)/2+k-i;
else p=n*(n+1)/2;
if(k<=j)q=k*(2*n-k+1)/2+j-k;
else q=n*(n+1)/2;
c[v]=c[v]+a[p]*b[q];
}
}
}
void main()
{
int a[]={1,2,4,3,5,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 + -