1、 数据结构数据结构 课 程 设 计 报 告 书 题题 目目: 数组的存储格式转换 专专 业业: 计算机科学与技术 班班 级级: 计 121 学学 号号: 完成时间完成时间: 一、一、 问题描述问题描述 1.1 问题描述问题描述 根据数组的相关知识,以行列式的方根据数组的相关知识,以行列式的方式输入矩阵,进行简单的运算,转置及求式输入矩阵,进行简单的运算,转置及求 逆等过程,然后打印出该矩阵。逆等过程,然后打印出该矩阵。 1.2 基本要求基本要求 需要按要求输入矩阵,系统会自行运算,然后输出矩阵。需要按要求输入矩阵,系统会自行运算,然后输出矩阵。 二、二、 概要设计概要设计 进 行 运 算 开
2、始 进 入 程 序 提示输入的矩阵类型 输入选择 提示输入矩阵的方式 输入选择 输出结果 操作结束 三、三、 详细设计详细设计 1.1 函数申明函数申明 float MatDet(float *p, int n); /求矩阵的行列求矩阵的行列 式式 float Creat_M(float *p, int m, int n, int k); /求矩阵元素求矩阵元素 A(m, n) 的代数余之式的代数余之式 void print(float *p, int m,int n); /输出矩阵输出矩阵 n*n bool Gauss(float *pSrc, float *pDst, int iRow);
3、 /采用部分主元的采用部分主元的 高斯消去法求方阵高斯消去法求方阵 A 的逆矩阵的逆矩阵 B bool Transepose(float *pSrc,float *pSdst, int iRow, int iCol); /求矩阵求矩阵 转置转置 bool MatMultiply(float *pSrc1, float *pSrc2,float *pDst,int iRow, int iCol);/矩阵相乘矩阵相乘 1.2 主函数主函数 float *buffer, *p; /定义数组首地址指针变量定义数组首地址指针变量 int row, num; /定义矩阵的行数和矩阵元素个定义矩阵的行数和矩
4、阵元素个 数数 int i, j; float determ; /定义矩阵的行列式定义矩阵的行列式 float aNN, bNN; int n; cout row; num = 2 * row * row; buffer = (float *)calloc(num, sizeof(float); /分配内存单分配内存单 元元 p = buffer; if (NULL != p) for (i = 0; i *p+; else cout n; cout aij; /运用高斯消去法求该矩阵的逆矩阵并输出运用高斯消去法求该矩阵的逆矩阵并输出 if (Gauss(a, b, n) cout m; co
5、ut ai; print(a,m,n); coutm; delete a; delete b; delete c; delete d; return 0; /- /功能功能: 求矩阵求矩阵(n*n)的行列式的行列式 /入口参数入口参数: 矩阵的首地址,矩阵的行数矩阵的首地址,矩阵的行数 /返回值返回值: 矩阵的行列式值矩阵的行列式值 /- float MatDet(float *p, int n) int r, c, m; int lop = 0; float result = 0; float mid = 1; if (n != 1) lop = (n = 2) ? 1 : n; /控制求和循环次数控制求和循环次数,若为若为 2 阶,则循环阶,则循环 1 次,否则为次,否则为 n 次次 for (m = 0; m row; num = 2 * row * row; buffer = (float *)calloc(num, sizeof(float); /分配内存单元 p = buffer; if (NULL != p) for (i = 0; i *p+; else cout n; cout aij; /运用高