这篇实验报告是关于《程序设计专题》课程的实验,涵盖了两个主要问题:结构化程序设计与递归函数问题,以及共享子串问题。实验报告详细描述了问题的解决过程、程序设计的关键点以及团队成员的分工合作。
1. 结构化程序设计与递归函数问题:
- 问题描述:报告中提到了CAD问题和共享子串问题,但没有给出具体细节。通常CAD问题涉及到图形绘制和编辑,而共享子串问题则是字符串处理。
- 解决思路:对于CAD问题,报告指出通过定义结构体来记录图形的位置和类型,以便于擦除和重绘操作。使用了擦除前一个图形,再画新一个图形的策略,并利用InBox()函数判断鼠标是否在图形内,DrawRectangle()函数用于绘制矩形。
- 程序结构:报告提到了Main函数的调用结构,以及f()、DrawRectangle()和InBox()三个函数的实现。f()函数用于计算鼠标位置是否在直线上,DrawRectangle()用于画矩形,InBox()则用于判断鼠标是否在矩形区域内。
- 文件组织:主文件main.c包含头文件声明,结构体terms定义,以及函数声明。
2. 共享子串问题:
- 问题描述:这个问题涉及到英语单词的存储,通过共享相同子串来节省空间。
- 解决思路:报告提到通过找到两个单词的公共部分,使用三个链表分别存储不同部分和共享部分,然后拼接成完整的单词链表。
- 关键技术:找出共享部分的方法是将单词倒置后逐字符比较。
3. 程序亮点与拓展:
- 亮点:当鼠标键抬起时,程序添加了恢复功能,使得在图形被擦除后可以恢复,提高了用户体验。
- 不足之处:报告中提到的“实践之不足”较为空泛,表示实践过程是充足的。
4. 团队合作与收获:
- 团队成员分工合作,各自编写不同的函数,加深了对图形编程的理解。
- 在解决问题的过程中,遇到了一些困难,如未记录图形导致操作困难,通过不断调试和改进最终成功解决问题。
总结,这份实验报告展示了在程序设计中如何解决实际问题,包括图形编辑和字符串处理,强调了解决问题的过程和团队协作的重要性。同时,它也反映了在软件开发中,通过不断学习和实践,可以克服技术难题并提升技能。