




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验题目:实验八矩阵实验 程序设计2问题分析:1、题目要求:设计算法求三对角矩阵在压缩存储下的转置矩阵 2、设计思路:定义一种新的数据结构三元组用来存放数据,该数据结构为以一维数组,结点包括三个量i、j、v,i、j分别用来记录矩阵中元素的下标,v用来记录元素值,这样交换时,仅对下标交换即可达到转置矩阵的目的 3、输入与输出:只需输入三对角矩阵中所有非零元素的值,存放在三元组里,输出时,程序自动在没有数字元素处补零,以矩阵形式输出; 4、转置:调用转置函数进行转置,转置时仅交换数据的下标5、测试数据:A、输入矩阵阶数:4 输入第一行的两个元素:1 2 输入第二、三行的元素,各三个: 4 5 6 7 8 9 输入最后一行的两个元素:3 8 预测结果: 原矩阵: 转置后矩阵: 1 2 0 0 1 4 0 0 4 5 6 0 2 5 7 0 0 7 8 9 0 6 8 3 0 0 3 8 0 0 9 8 B、输入矩阵阶数:5 输入第一行的两个元素:12 45 输入第二、三行的元素,各三个: 77 88 99 44 55 66 11 22 33 输入最后一行的两个元素:14 82 预测结果: 原矩阵: 转置后矩阵: 12 45 0 0 0 12 77 0 0 0 77 88 99 0 0 45 88 44 0 0 0 44 55 66 0 0 99 55 11 0 0 0 11 22 33 0 0 66 22 14 0 0 0 14 82 0 0 0 33 82概要设计:1、为了实现上述程序功能,需定义三元组数据结构用来存储数据,建立三元组输入函数,输出函数和矩阵转置函数,最后在屏幕上输出结果;2、本程序包含4个函数: 主函数main()三对焦矩阵建立函数Setmatrix()转置函数Trabsmatrix()输出函数Tsmatrixout() 各函数关系如下:main()Setmatrix()Trabsmatrix()Tsmatrixout()详细设计: 1、数据结构与结点类型: typedef struct /定义结点类型 int i,j,v;node;typedef struct /定义矩阵类型 node datamax;int m;TSmatrix;2、各函数的基本操作三对角矩阵的建立函数TSmatrix *Setmatrix() 申请空间; 输入第一行的两个元素; 输入2n-1行的元素,每行3个; 返回;转置函数TSmatrix *Trabsmatrix(TSmatrix *T) 建立新的三元组; 把原三元组数据下标交换,放入新组; 返回新三元组;输出函数void TSmatrixout(TSmatrix *T) 定义变量a、b=0; 如果三元表中数据下表等于a、b的值,则输出该元素; 否则,输出0; a+;b+;源代码:#include#include#define max 20typedef struct /定义结点类型int i,j,v;node;typedef struct /定义矩阵类型node datamax;int m;TSmatrix;TSmatrix *Setmatrix() /建立三对角矩阵 TSmatrix *T;T=(TSmatrix *)malloc(sizeof(TSmatrix);printf(请输入矩阵阶数:);scanf(%d,&T-m);printf(建立三对角矩阵:n); printf(输入第一行的两个数:n); /第一行只有两个元素,单独输入 scanf(%d %d,&T-data0.v,&T-data1.v); T-data0.i=0; T-data0.j=0; T-data1.i=0; T-data1.j=1; printf(输入第二行至第%d行的数(每行3个):n,T-m-1); int t=2; for(int p=1;pm-1;p+) /循环输入2n-1行的元素,每行3个 for(int q=p-1;qdatat.j=q;T-datat.i=p; scanf(%d,&T-datat.v);t+; printf(输入最后一行的两个数:n); /输入最后一行的两个元素 scanf(%d %d,&T-data3*T-m-4.v,&T-data3*T-m-3.v); T-data3*T-m-4.i=T-m-1; T-data3*T-m-4.j=T-m-2; T-data3*T-m-3.i=T-m-1; T-data3*T-m-3.j=T-m-1;return T;TSmatrix *Trabsmatrix(TSmatrix *T) /三对角矩阵转置 int n,temp;TSmatrix *F;F=(TSmatrix *)malloc(sizeof(TSmatrix);F-m=T-m;for(n=0;nm-2;n+) /将结点信息存入新三元组表中temp=2*(T-datan.j)+(T-datan.i); /计算待存入三元数组下标F-datatemp.i=T-datan.j; /进行交换F-datatemp.j=T-datan.i;F-datatemp.v=T-datan.v;return F;void TSmatrixout(TSmatrix *T) /三对角矩阵输出 int a,b,n;n=0;for(a=0;am;a+) /输出三对角矩阵,下标只有数据则输出对应元素值for(b=0;bm;b+) /否则输出0if(T-datan.i=a)&(T-datan.j=b) printf(%d ,T-datan.v); n+; else printf(0 );printf(n);void main()TSmatrix *T;T=Setmatrix();printf(原三对角矩阵:n);TSmatrixout(T);T=Trabsmatrix(T);printf(转置后三对角矩阵:n);TSmatrixout(T);调试分析:1、进行矩阵转置时本来采用把两数据进行交换的方法,但这样做容易使程序变的复杂,可读性变差,于是采用交换数据下标的方式,使思路更加清晰,也便于操作。如下图:2、三对角矩阵的输入时,由于第一行和最后一行只有两个元素,而其余行有三个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 18731:2025 EN Spices and condiments - Seasoning oil of Zanthoxyli pericarpium - Specification
- 学前口语考试试题及答案
- 深海养殖自动化喂养系统应用方案
- 混凝土砌块墙体施工技术方案
- 金属雕塑建筑施工组织设计及对策
- 光村镇2024-2025学年第二学期五年级科学期末学业评价题目及答案
- 农村饮水安全巩固提升工程施工方案
- 房屋建筑工程消防安全实施方案
- 碳捕集利用工程项目进度管理方案
- 宅基地空地租赁与农业项目合作合同书
- 国际音标卡片(打印版)
- 科技与全球资源分配问题
- 2024年高等教育教育类自考-00285中国福利思想笔试历年真题荟萃含答案
- 蛋白质相互作用传递信息蛋白质
- 马克思主义劳动观的内涵
- 《金属热处理》课件
- 学生上下学交通方式台账
- 路边停车经营管理方案
- 混凝土围墙贴砖施工方案
- 人体工程学室外环境设施课件
- 初次聊天话术900句高情商的对话语录
评论
0/150
提交评论