实验四【2.对称矩阵的压缩存储】

该实验旨在掌握对称矩阵的压缩存储方法,通过建立nxn对称矩阵,将其存储在一维数组SA中,并验证在数组中的寻址操作。实验内容包括矩阵的创建、压缩存储及元素寻址。
摘要由CSDN通过智能技术生成

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;
}


4.调试运行的结果如下:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值