1.实验目的
(1)掌握对称矩阵的压缩存储方法;
(2)验证对称矩阵压缩存储的寻址方法。
2.实验内容
(1)建立一个nxn的对称矩阵A;
(2)将对称矩阵用一维数组SA存储;
(3)在数组SA中对矩阵A的任意元素进行寻址操作。
3.实验程序
由于程序较为简单,只需直接创建一个工程,然后再在工程里新建一个源程序文件即可,代码如下:
#include<iostream> //引入输入输出流
using namespace std;
const int N=5; //对N阶对称矩阵进行压缩储存
int main()
{
int A[N][N],SA[N*(N+1)/2]={0};
int i,j;
for(i=0;i<N;i++) //生成对称矩阵A的各个元素
for(j=0;j<=i;j++)
A[i][j]=A[j][i]=i+j;
for(i=0;i<N;i++) //输出对称矩阵A
{
for(j=0;j<N;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
for(i=0;i<N;i++) //将对称矩阵A进行压缩存储
for(j=0;j<=i;j++)
SA[i*(i-1)/2+j]=A[i][j];
cout<<"请输入行号和列号:"; //输出对称矩阵A的任意元素
cin>>i>>j;
cout<<i<<"行"<<j<<"列的元素值是:";
if(i>=j) //元素A[i][j]在主对角线的下面
cout<<SA[i*(i-1)/2+j]<<endl;
else //元素A[i][j]在主对角线的上面
cout<<SA[j*(j-1)/2+i]<<endl;
return 0;
}