ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.33KB ,
资源ID:116190      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/116190.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计-特殊矩阵计算器.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计-特殊矩阵计算器.docx

1、特殊矩阵计算器1、特殊矩阵计算器 问题描述:创建两个特殊矩阵 A 和 B,计算 A+B、A-B、A*B、B*A、A(或 B)的逆、A(或 B)的 转置、A(或 B)的行列式等,具体要求如下: A、B 均是压缩存储的特殊矩阵,如上/下三角矩阵、对称矩阵、对角矩阵、单位矩阵等。 A、B 的矩阵类型、行列数、各位置的元素值等信息均在运行时指定(对于不同类型的矩阵, 要求输入的数据也不尽相同)。 各运算若可行,则打印结果;若不可行,则给出提示信息。 各运算需自己实现,禁止调用语言內建或第三方类库的矩阵 API。 涉及算法及知识:特殊矩阵的压缩存储、矩阵相关运算。#include#include#def

2、ine max 100typedef structint row,col;/定义矩阵行数、列数 int amaxmax; Matrix; /存储结构typedef structint arraymax;int n; /定义矩阵的阶 M;Matrix A,B,C,D; M p; /*矩阵的压缩存储*/int CompressMatrix(int m,int i,int j,int n)int k;if(m=1)if(i=j)k=i*(i+1)/2+j+1;elsek=0;return k;if(m=3) if(i=j)k=i*(i+1)/2+j;elsek=j*(j+1)/2+i;return

3、k;if(m=4)if(i!=j)k=0;elsek=i+1;return k;if(m=5)if(i=j)return 1;elsereturn 0;return 0;/*矩阵定义*/上三角矩阵 /void CreateMatrixUppertri(M &a,Matrix &A)int i,j,t,n;printf(请输入上三角矩阵的行数和列数(行数与列数相同):);scanf(%d%d,&A.row,&A.col);n=A.row; a.n=n; printf(请输入%d个数:,n*(n+1)/2);a.array0=0;for(i=1;i=n*(n+1)/2;i+)scanf(%d,&a

4、.arrayi);for(i=0;in;i+)for(j=0;jn;j+)t=CompressMatrix(1,i,j,n);A.aij=a.arrayt;/下三角矩阵 void CreateMatrixLowertri(M &a,Matrix &A)int i,j,t,n;printf(请输入下三角矩阵的行数和列数(行数与列数相同):);scanf(%d%d,&A.row,&A.col);n=A.row; a.n=n; printf(请输入%d个数:,n*(n+1)/2);a.array0=0;for(i=1;i=n*(n+1)/2;i+)scanf(%d,&a.arrayi);for(i=

5、0;in;i+)for(j=0;jn;j+)t=CompressMatrix(2,i,j,n);A.aij=a.arrayt; /对称矩阵 void CreateMatrixSymmetry(M &a,Matrix &A)int i,j,t,n;printf(请输入对称矩阵的行数和列数(行数与列数相同):);scanf(%d%d,&A.row,&A.col);n=A.row; a.n=n; printf(请输入%d个数:,n*(n+1)/2);for(i=0;in*(n+1)/2;i+)scanf(%d,&a.arrayi);for(i=0;in;i+)for(j=0;jn;j+)t=Comp

6、ressMatrix(3,i,j,n);A.aij=a.arrayt; /对角矩阵 void CreateMatrixDiagonal(M &a,Matrix &A)int i,j,t,n;printf(请输入对角矩阵的行数和列数(行数与列数相同):);scanf(%d%d,&A.row,&A.col);n=A.row; a.n=n; printf(请输入%d个数:,n);a.array0=0;for(i=1;i=n;i+)scanf(%d,&a.arrayi);for(i=0;in;i+)for(j=0;jn;j+)t=CompressMatrix(4,i,j,n);A.aij=a.arra

7、yt; /单位矩阵 void CreateMatrixUnit(M &a,Matrix &A)int i,j,t,n;printf(请输入单位矩阵的行数和列数(行数与列数相同):);scanf(%d%d,&A.row,&A.col);n=A.row; a.n=n; a.array0=0;a.array1=1; for(i=0;in;i+)for(j=0;jn;j+)t=CompressMatrix(5,i,j,n);A.aij=a.arrayt; /*矩阵运算*/矩阵加法 int Add(Matrix A,Matrix B,Matrix &C) int i,j;if(A.row!=B.row)

8、return 0;elseC.row=A.row;C.col=A.col; for(i=0;iA.row;i+)for(j=0;jA.col;j+)C.aij=A.aij+B.aij;return 1;/矩阵减法 int Sub(Matrix A,Matrix B,Matrix &C) int i,j;if(A.row!=B.row)return 0;elseC.row=A.row;C.col=A.col;for(i=0;iA.row;i+)for(j=0;jA.col;j+)C.aij=A.aij-B.aij;return 1;/矩阵乘法int Mul(Matrix A,Matrix B,M

9、atrix &C)int i,j,k;if(A.row!=B.row)return 0;elseC.row=A.row; C.col=A.col;for(i=0;iA.row;i+) for(j=0;jA.col;j+)C.aij=0; for(i=0;iA.row;i+) /A的行数 for(j=0;jA.col;j+) /A的列数和B的行数 for(k=0;kA.col;k+) /B的列数 C.aij+=A.aik*B.akj;return 1; /矩阵的逆运算void Inverse(Matrix A)Matrix C;float p,q;int k,i,j,n;n=A.row;for(

10、i=0;in ;i+)for(j=0;j(n *2);j+) if(jn) C.a ij=A.a ij; else if(j=n+i) C.a ij=1.0;else C.a ij=0.0;for(k=0;kn ;k+)for(i=0;in ;i+)if(i!=k)p=C.a ik/C.a ii;for(j=0;j(n *2);j+)q=C.a ij*p;C.a ij=C.a ij-q; for(i=0;in ;i+)p=C.aii;for(j=0;jn*2;j+)C.aij=C.aij/p;float y=1.0;for(i=0;in;i+)y=y*C.aii;for(i=0;in;i+)f

11、or(j=0;jn;j+)A.aij=C.aij+n;printf(逆运算结果:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%d ,A.aij);printf(n); /矩阵转置 void Tans(Matrix A,Matrix &C) int i,j; C.row=A.row;C.col=A.col; for(i=0;iA.row;i+) for(j=0;jA.col;j+)C.aji=A.aij; /矩阵行列式的值 void Determinant(Matrix A) int count100; int sum=0;int n;n=A.row; /矩阵的阶nfor (int p = 0; p n; p+) int k = 0; int j = p%n;countp= A.akp;for (int i = 1; i n; i+) k+; j+;k = k%n;j = j%n;countp *= A.akj;for (p = n-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1