选择4减法的时候(上)选择退出的时候(下)
选择退出的时候
五、 结果分析。
1. 界面,由以下函数实现:
printf(\
printf(\┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\\n\ printf(\┃ *** 稀疏矩阵的加、减、转、乘 *** ┃\\n\ printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\\n\ printf(\┃ 1、稀疏矩阵的加法 ┃\\n\ printf(\┃ 2、稀疏矩阵的转置(transmat函数) ┃\\n\ printf(\┃ 3、稀疏矩阵的转置(Fasttran函数) ┃\\n\ printf(\┃ 4、稀疏矩阵的减法 ┃\\n\ printf(\┃ 5、退出该应用程序 ┃\\n\ printf(\┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\\n\ printf(\输入要进行的项目的编号:\ scanf(\
该函数由简单的输出函数完成
2. /*********************************************************
*函数名字: void chush(TSMatrix a,TSMatrix *b); *函数描述: 初始化稀疏矩阵(进行顺序排列)
*********************************************************/
void chush(TSMatrix a,TSMatrix *b) //初始化函数体 {
int i,j,k,q=1; //用于标记的整形变量
b->row_size=a.row_size; //把a的矩阵的行(row_size)列(colum_size)非零个数(non_zero_amount)赋予B b->colum_size=a.colum_size;
b->non_zero_amount=a.non_zero_amount;
for(i=1;i<=a.row_size;i++) for(j=1;j<=a.colum_size;j++)
for(k=1;k<=a.non_zero_amount;k++)
if(a.data[k].row==i&&a.data[k].colum==j)
if(a.data[k].value!=NULL) //如果a.data行为i列为j就赋给b->data[q] {
b->data[q].colum=a.data[k].colum; b->data[q].row=a.data[k].row; b->data[q].value=a.data[k].value;
q++; } }
该方法主要是用来初始化输入的函数,通过此函数将所输入的稀疏矩阵按照行列数的增加排列存进b.data中。
3. /*********************************************************
*函数名字: void add_matrix(TSMatrix one,TSMatrix two, TSMatrix &three); *函数描述: /加法函数one+two=three
*********************************************************/
two.data[j]的行列数与每一个three.data[i]行列数做比较 two的row(行数)比three小时<直接后移插入 再判断相等时;再判断<1列数也相等时相加 2小于的时候后移插入 3.1大于的时候是否是i=three.non_zero_amount(最后一个)
是插入到最后
3.2不是跳出contine继续i++;
two的row(行数)比three大时<是否是i=three.non_zero_amount(最后一个)是插入到最后
<不是跳出contine继续i++;
六、 设计心得。
通过这一周的课程设计让我学到了不少知识,虽然总体上比较简单,但还是遇到了一些问题,比如一些细小的格式错误让我疑惑了很久,这个随着时间编程时间渐渐的习惯了,后面的编程格式问题就少了;再就是逻辑问题了,因为这个题目运用了比较多的比较,if,for函数,有时相差一个数就是的结果溢出错误,解决这个问题的方法是通过小的举例,了解代码的执行过程来判断条件的设立的。还有一点就是参数的传递、取地
址运算等等。
为了保证加法后输出也是按顺序的,是先使得加数A按顺序排列,然后在从B一个一个的取数据进行判断插入。中间运用了比较多的判断和移动,通过这个我加深了对于这部分知识的了解。
由于题目比较早的完成,在调试和测试完成后,我又写了减法跟乘法的实现,因为有之前的写加法的经验,减法函数花的时间不是很多。
在这次课程设计中,不仅培养了我开发一个小型程序的能力,而且也培养了我的团队合作能力。其中有程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以及迷茫。在这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性。还有就是这次课程设计令我对C语言更加熟悉,以前对于写程序是懵懵懂懂的,现在和以前比起来,写程序得心应手多了。而且对程序中的细节错误更容易发现。而且做程序必须要静下心来去做程序,必须要去完全的投入中,在做程序的时候要时刻不能忘记去把课本中尽多的知识点用到程序中,只有亲手去制作一个程序,才可以体会到自己去做一个程序,当自己通过修改错误通过的时候,会有很大的成就感。
参考文献。
[1] 数据结构(第二版) 西安电子科技大学 杨秀金 张红梅编 [2]C程序设计(第三版) 清华大学出版社 谭浩强编