收藏 分销(赏)

数据结构压缩矩阵.doc

上传人:pc****0 文档编号:6382736 上传时间:2024-12-07 格式:DOC 页数:15 大小:126KB 下载积分:10 金币
下载 相关 举报
数据结构压缩矩阵.doc_第1页
第1页 / 共15页
数据结构压缩矩阵.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
1.课程设计的目的 (1) 熟练使用 C ++语言编写程序,解决实际问题; (2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2.需求分析 问题描述:对于特殊矩阵可以通过压缩存储减少存储空间。 基本要求: 1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值。 2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值。 特殊矩阵:具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。最常见的特殊矩阵有对称矩阵、上(下)三角矩阵、对角矩阵等。 特殊矩阵的压缩存储方法:找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现规律性分布的值相同的多个矩阵元素压缩存储到一个存储空间中。 3.矩阵的压缩与解压缩问题的设计 图1-1 4.调试分析 图1-2程序运行界面 图1-3 程序运行界面 图1-4 文件的输入 5.小结 经过矩阵的压缩与解压缩的实验,让我了解到计算机是怎么为了减少承储空间的,存储矩阵的。以及特殊矩阵式在计算机中存储,以及把这些矩阵的压缩后怎么解压出来,恢复原来的样子!我觉得像这样的课程设计,一定要先想好有哪些板块,以及那些板块之间的关系这么样!谁调谁! 6、参考文献 [1] 严蔚敏,吴伟民 编著. 数据结构(C 语言版)--北京: 清华大学出版社,2007.2 [2]严蔚敏,吴伟民 米 宁 编著. 数据结构题集(C 语言版)--北京: 清华大学出版社, 2007.3 [3]网上搜索相关程序作为参考 附录: #include <iostream> #include<fstream> using namespace std; int SymmetricMatrix() { int colm;//行 int row;//列 fstream file("SymmetricMatrix.txt"); ofstream fout("SymmetricMatrix1.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { file>>matrix[i][j]; //cout<<matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=i;j<row;j++) { if(!(matrix[i][j]==matrix[j][i])) { cout<<"输入的不是对称矩阵"<<endl; return 0; } } } cout<<"对称矩阵如下"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { //fin>>matrix[i][j]; cout<<matrix[i][j]<<"\t"; } cout<<endl; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=i;j<row;j++) { array[k]=matrix[i][j]; file<<3433; //file<<array[k];//??????????????? cout<<array[k]<<"\t"; ++k; } } cout<<endl; return 0; } int UpperTriangularMatrix() { int colm;//行 int row;//列 fstream file("UpperTriangularMatrix.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { file>>matrix[i][j]; //cout<<matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=0;j<i;j++) { if(!(matrix[i][j]==0)) { cout<<"输入的不是上三角矩阵"<<endl; return 0; } } } cout<<"上三角矩阵如下"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { //fin>>matrix[i][j]; cout<<matrix[i][j]<<"\t"; } cout<<endl; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=i;j<row;j++) { array[k]=matrix[i][j]; file<<3433; //file<<array[k];//??????????????? cout<<array[k]<<"\t"; ++k; } } cout<<endl; return 0; } int LowerTriangularMatrix() { int colm;//行 int row;//列 fstream file("LowerTriangularMatrix.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { file>>matrix[i][j]; //cout<<matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=i+1;j<row;j++) { if(!(matrix[i][j]==0)) { cout<<"输入的不是下三角矩阵"<<endl; return 0; } } } cout<<"下三角矩阵如下"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { //fin>>matrix[i][j]; cout<<matrix[i][j]<<"\t"; } cout<<endl; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=0;j<=i;j++) { array[k]=matrix[i][j]; //file<<3433; //file<<array[k];//??????????????? cout<<array[k]<<"\t"; ++k; } } cout<<endl; return 0; } int SymmetricMatrixuncompress() { int colm;//行 int row;//列 fstream file("SymmetricMatrixuncompress.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=0;j<=i;j++) { file>>matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=0;j<=i;j++) { matrix[j][i]=matrix[i][j]; } } cout<<"解压缩对称矩阵"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { cout<<matrix[i][j]; } cout<<endl; } return 0; } int UpperTriangularMatrixuncompress() { int colm;//行 int row;//列 fstream file("UpperTriangularMatrixuncompress.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=i;j<row;j++) { file>>matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=0;j<=i;j++) { matrix[i][j]=0; } } cout<<"解压缩上三角矩阵"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { cout<<matrix[i][j]; } cout<<endl; } return 0; } int LowerTriangularMatrixuncompress() { int colm;//行 int row;//列 fstream file("LowerTriangularMatrixuncompress.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i<colm;i++) { matrix[i]=new int[row]; } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i<colm;i++) { for(int j=0;j<=i;j++) { file>>matrix[i][j]; } } for (int i=0;i<colm;i++) { for(int j=i+1;j<row;j++) { matrix[i][j]=0; } } cout<<"解压缩上三角矩阵"<<endl; for (int i=0;i<colm;i++) { for(int j=0;j<row;j++) { cout<<matrix[i][j]; } cout<<endl; } return 0; } int main() { char c; do { printf("\t 1.对称矩阵的压缩\n"); printf("\t 2.上三角矩阵的压缩\n"); printf("\t 3.下三角矩阵的压缩\n"); printf("\t 4.对称矩阵的解压缩\n"); printf("\t 5.上三角矩阵的解压缩\n"); printf("\t 6.下三角矩阵的解压缩\n"); printf("\t 7.!\n"); printf("Please Input choose (1-7):"); scanf("%s",&c); switch(c) { case '1': printf("\t 1.\n"); SymmetricMatrix(); break; case '2': printf("\t 2.");UpperTriangularMatrix(); break; case '3': printf("\t 3."); LowerTriangularMatrix(); break; case '4': printf("\t 4."); SymmetricMatrixuncompress(); break; case '5': printf("\t 5."); UpperTriangularMatrixuncompress(); break; case '6': printf("\t 6."); LowerTriangularMatrixuncompress(); break; case '7': exit(0); default : break; } }while(c!='4'); cin.get(); return 0;}
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服