- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计多维数组精品
数据结构课程设计多维数组班级学号学生姓名提交日期2017年1月12日成绩计算机与通信工程学院目录第一部分需求分析1.1程序设计的任务21.2程序达到的功能21.3程序功能模块图和流程图21.4测试数据3第二部分详细设计2.1用到的数据类型和数据结构定义42.2各个函数的基本操作和功能42.3各个函数的调用关系52.4主程序思路5第三部分调试分析3.1遇到的问题及解决过程63.2设计过程中学到的知识73.3经验与体会7第四部分用户手册4.1每一步骤的注释说明74.2整体思路7第五部分测试结果5.1测试结果85.2附录-程序源码9第一部分需求分析1.1程序设计的任务1.1.1问题描述设计并模拟实现整型多维数组类型。1.1.2 基本要求设计并模拟实现多维数组类型。整型多维数组应具有以下基本功能: (1) 定义整型多维数组类型,各维的下标是任意整数开始的连续整数。 (2) 下标变量赋值,执行下标范围检查。 (3) 同类型数组赋值。(4)子数组赋值,例如 ,a[1..n]=a [2..n+1];a[2..4][3..5]=b[1..3][2..4]。 (5) 确定数组的大小。1.1.3选作内容(1) 各维的下标是任意字符开始的连续字符。(2) 数组初始化。(3) 可修改数组的下标范围。1.2程序达到的功能(1) 定义整型多维数组结构体,并定义各维的的结构体。 (2) 下标变量赋值。 (3) 同类型数组赋值,不同类型赋值时检查出错误。(4)子数组赋值,例如a[1..n]=a [2..n+1];a[2..4][3..5]=b[1..3][2..4]。 (5) 确定数组的大小。(6) 数组初始化。(7) 可修改数组的下标。1.3程序功能模块图和流程图图1 程序功能模块图图2. 程序流程图1.4 测试数据多维数组a:三维;下标[1**2][2**3][3**5];赋值:123456789101112多维数组b:两维;下标[1**2][2**3];赋值:1 2 3 4多维数组c;三维;下标[2**3][3**4][4**6];赋值:2 3 4 5 6 7 8 9 10 11 12查找下标:a[2][3][4],a[1][3][5];替换值为原数值的复制,例如6改为66修改第2维的下标,保证原来数组个数不变第二部分详细设计2.1 用到的数据类型和数据结构定义2.1.1第几维数组的结构体定义typedef struct{ElemType lower; //定义每维数组的下界 ElemType upper; //定义每维数组的上界int boundnum; //定义每维数组中元素的个数 }Boundi; //定义第i维数组2.1.2 多维数组结构体的定义typedef struct{int dim; //定义多维数组的维数 Boundi bound[MAXDIM]; //定义第i维数组int total; //定义数组中元素的个数 int elem[MAXTOTAL]; //数组中每个元素的地址,其中elem[0]为该多维数组的基址}NArray; //定义多维数组2.2各个函数的基本操作及功能2.2.1 NArray CreatArray();多维数组创建并初始化函数2.2.2 int Replace(NArray A,NArray B);两个数组复制的函数2.2.3 void AdjustBound(NArray A);修改下标的函数2.2.4 void FindSwap(NArray A);查找并替换的函数2.2.5 void PrintArray(NArray A);打印输出函数2.2.6 int main();主函数图3.程序子函数主函数截图2.3 各个函数之间的调用关系图4. 各个函数之间的调用关系2.4 主程序思路图5.主程序思路流程图第三部分 调试分析3.1 遇到的问题及解决过程3.1.1、在replace函数(即数组替换函数)中,当执行替换循环时,代码如下:for(i=0;iA.total;i++){B.elem[i]=A.elem[i]; //把多维数组A赋值给B }cout********赋值成功********endl; return 0;把return 0;放到了for循环里了。结果只a数组中只把第一个元素赋值给了c数组里,其他的元素仍没有替换。3.1.2、在findswap函数中,给定数组下标求地址映像时遇到了困难,原因还是由二维数组类比到三维数组及多维数组出现了问题。三维数组可以想象成空间的数组,又由于c++中按行存储,所以举了个例子: A[2][2][3]的三维数组,求A[2][2][1]
文档评论(0)