C++程序设计大作业2.doc

上传人:博****1 文档编号:563246398 上传时间:2023-08-02 格式:DOC 页数:15 大小:130.51KB
返回 下载 相关 举报
C++程序设计大作业2.doc_第1页
第1页 / 共15页
C++程序设计大作业2.doc_第2页
第2页 / 共15页
C++程序设计大作业2.doc_第3页
第3页 / 共15页
C++程序设计大作业2.doc_第4页
第4页 / 共15页
C++程序设计大作业2.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C++程序设计大作业2.doc》由会员分享,可在线阅读,更多相关《C++程序设计大作业2.doc(15页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础大作业姓 名:学 号:班 级:成 绩:信息科学与工程学院2009年7月5日程序设计基础大作业1.矩阵的综合运算1.1.需求陈述此程序为设计一套C函数库用于矩阵的计算,实现矩阵的各种计算功能,同时把矩阵的行列和矩阵的元素封装在一起,使关于矩阵的各种信息更加方便被用户运用。1.2.需求分析函数功能需求:项目功能子功能备注Matrix初始化矩阵的初始化initMatrix()矩阵的具体定义为:typedef struct size_t line;size_t row;int elMAX_MATRIXMAX_MATRIX; Matrix;初始化为单位矩阵Identity()从文件输入rea

2、dMatrix()和向文件输出writeMatrix()矩阵运算判断矩阵是否为空:isEmptyMatrix()矩阵加法addMatrix矩阵乘法multiMatrix()求逆矩阵inverseMatrix()求矩阵的转置transMatrix()求矩阵行列式的值数据需求:为提高计算准确性和节约时间,故提前在文件中录入数据,矩阵计算时大多直接调用。1.3. 程序设计思想1.3.1 数据类型矩阵采用静态的二维整型数组来表示,将矩阵的行数、列数和二维数组封装在一个结构体中。矩阵的上限可用符号常量“MAX_MATRIX”来表示,实际的行和列的项数由结构体中表示行和列的数据项控制。矩阵的具体定义为:#

3、define MAX_MATRIX 100typedef size_t line; /矩阵的行数size_t row; /矩阵的行数int elMAX_MATRIXMAX_MATRIX;/矩阵元素 Matrix;1.3.2 功能分析a) 矩阵的初始化Matrix initMatrix(int *a, size_t m, size_t n)功能:用一个m行n列的二维数组a来初始化一个矩阵,把行列和元素封装在一起,该矩阵的值作为返回值,返回值的类型为一个结构体类型。实现思路:矩阵的行数初始化为二维数组的行数,矩阵的列数初始化为二维数组的列数,矩阵的元素初始化为二维数组的元素。返回初始化后的矩阵。b

4、) 初始化为单位矩阵Matrix Identity(size_t m);功能:创建一个m行m列的单位矩阵,矩阵的值作为返回值,返回值的类型为一个结构体类型。实现思路:矩阵的行和列初始化为相同值,矩阵的对角线元素初始化为1,其余元素初始化为0。返回初始化后的矩阵。c) 判断矩阵是否为空:size_t isEmptyMatrix(Matrix a);功能:判断一个矩阵a是否为空,是指某个matrix型变量内是否有数据,即是否已经存储了矩阵;返回值用来表示矩阵的元素个数:矩阵为空则返回0,否则返回矩阵元素个数。实现思路:若矩阵为空,则行列数为0,否则为非0,故可直接返回矩阵的行和列的乘积a-line

5、*a-row。d) 从文件输入int readMatrix(Matrix *a, size_t m, size_t n, FILE *fp);和向文件输出int writeMatrix(Matrix *a, FILE *fp);功能:从文件fp中读取一个m行n列的矩阵,存入指针a所指示的存储空间内;向文件fp写入指针a所指示的存储空间内的矩阵;返回值均为实际读出(写入)的矩阵元素数目、若不能读或写则返回0。实现思路:从文件读出矩阵时,打开文件,不能读时返回0,否则读出m*n个元素,矩阵的行为m,矩阵的列为n。向文件写入矩阵时,不能写返回0,否则向文件写入m*n个元素,每n个为一行,共m行。e)

6、 矩阵加法Matrix *addMatrix(Matrix *a, Matrix *b)矩阵乘法Matrix *multiMatrix(Matrix *a, Matrix *b)功能:把指针a所指示的存储空间内的矩阵与指针b所指示的存储空间内的矩阵向加(相乘),结果放入a所指示的存储空间内,返回值为存储结果的地址。实现思路:实现矩阵的加法时,若两矩阵为空矩阵或对应行列不相等,则不能相加,返回空指针NULL,否则,对应元素相加,结果放入a中,返回a;实现矩阵的乘法时,若两矩阵为空矩阵或a的列数和b的行数不相等,则不能相乘,返回空指针NULL,否则,a的行数为乘积矩阵的行数,b的列数为乘积矩阵的列

7、数,a的第i行和b的第j列的对应元素的乘积的和为乘积矩阵的i行j列的元素。乘积放入a中,返回乘积矩阵的地址a。关键代码:/*a的第i行和b的第j列的对应元素的乘积的和为乘积矩阵的i行j列的元素*/for(int i=0;ic.line;i+) for(int j=0;jc.row;j+) c.elij=0; for(int k=0;krow;k+) c.elij+=a-elik*b-elkj; f) 求矩阵的转置Matrix transMatrix(Matrix *a)功能:求矩阵a的转置,返回转置矩阵。实现思路:把a的元素关于对角线互换,返回转置矩阵。g) 求行列式的值double HANG

8、LIESHI(Matrix a)功能:在能求行列式的值时,计算行列式的之值并返回结果。实现思路:若矩阵为空矩阵或矩阵不是方阵,则不能求行列式的值,返回0。若矩阵只有一个元素,行列式的值就是该元素的值。否则运用递归方法,把行列式按行展开,求每个元素的代数余子式和该元素的积,在求和,即为行列式的值。关键代码:/*去掉第1行第j列,求其余子式*/if(tch);/释放内存空间 s-len=0;/长度赋值为0b) 初始化为空串Str initNullString()、判断是否为空串并求字符串长度size_t isNullString(Str *s)功能:初始化为空串,初始化成一个空字符串。判断是否为空

9、串并求字符串长度,为进行字符串操作,先判断字符串是否为空。实现思路:初始化为空串,把Str类型的结构体成员(字符串和长度)都赋值为0。判断是否为空串并求字符串长度,若结构体成员中字符串长度为0,则字符串为空,否则不为空,返回字符串的长度值。关键代码:/*长度和内容都为空*/empty.len=0;empty.ch=0;c) 字符串比较int StringCmp(Str *s1, Str *s2)、字符串拷贝Str *StringCpy (Str *s1, Str *s2)、字符串连接Str *StringCat (Str *s1, Str *s2)功能:字符串比较,实现两个字符串的比较,返回比较大小值;字符串拷贝,把s2的字符串拷贝到s1中,返回拷贝后的字符串地址;字符串连接,把

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号