c语言实现一元多项式的除法,课内资源 - 基于C++的一元多项式的计算
1 问题描述
将多个多项式输入并存储在内存中,然后对多项式进行加、减运算并输出结果。
2 数据结构描述一元多项式的表示方式:如 f=6x^5-7x^4+3 表示为 f=6,5 -7,4 3,0
每个多项式用单链表来存储:
typedefstructPolyNode
{
floatcoef;// 系数
intexpn;// 指数
structPolyNode*next;// 指向下个结点的指针
}Poly;
图示举例
3 主要算法描述主要功能:对输入的一元多项式进行加减运算并输出
程序主要模块:如下图所示
3.1 模块一:一元多项式的建立结点类型为:结构体Poly
数据流:系数、指数。
函数名为:
intCreatPoly(P_Poly*,int);
3.2 模块二:两个一元多项式的加法数据流:两个一元多项式相加后的结果
函数名为:
voidAddPoly(P_Poly*,P_Poly,P_Poly);
3.3 模块三:两个一元多项式的减法数据流:两个一元多项式相减后的结果;
函数名为:
voidDecPoly(P_Poly*,P_Poly,P_Poly);
程序中的主要函数及相应功能:
// 创建一元多项式
intCreatPoly(P_Poly*,int);
// 输出一元多项式
voidOutP_Poly(P_Poly);
// 两个多项式求和
voidAddPoly(P_Poly*,P_Poly,P_Poly);
// 两个多项式求差
voidDecPoly(P_Poly*,P_Poly,P_Poly);
4 程序的调试
4.1 问题一
由于程序运用了输入输出流的控制符,而没有包含文件,所以在连接时,出了错,后来看了下面窗口的错误提示,才知道自己忘了包含该文件进去。
4.2 问题二
因为输入多项式每一项时的格式为”系数,指数”,而用cin语句不知怎么解决,后来查找资料获悉用scanf函数可以实现输入的格式控制,因此运用了scanf这一函数。
4.3 问题三
输出多项式时,要输出正负号,这是一个比较麻烦的问题。开始想到了运用输出控制符setiosflags(ios::showpos)直接输出正号。可是却发现启用了该控制符后对后面的输出也起作用,导致x后面的指数在输出时也带上了正号。左思右想,得不到解决办法,只好另寻方法。最后多项式是可以输出来了,可是每次输出完后随即弹出出错框(如下图),这个问题本人至今还想不透。
5 程序测试
多项式名称不符合时的情况(本程序规定用单个小写字母命名多项式),如:命令输出一元多项式A
多项式不存在时的输出情况,如:命令输出一元多项式a
两多项式相加,如:a=6x^6-10x^5+4x^2 b=-x^6+5x^5+6x^4+2x^3
两多项式相减,如:a=-6x^7+10x^6+4x^4 b=5x^6-9x^5+5x^4+3x^3
6 程序特色本程序的力求简单明了,让使用者易于掌握。因此每一个指令都有相应的提示语句,分别按照这些提示语句进行选择,就会出现相应的菜单或实现相应的功能。
原本想加上乘法和除法的运算,可是每项互乘除要求两个链表的节点数据也相乘除,问题太多,又想不到好的解决办法,想不出具体实现的函数,因此,没有进行功能扩展。这也是本程序最大的不足之处。
每个函数对应解决一个问题,模块分明,系统出现错误时,易于限定哪个函数还不能完美实现某个功能,以便修改并改进。在完善程序的时候,这个特点帮了我很大的忙。例如调试减法运算功能时,系统有时会出现错误,因此便锁定在相减的函数上查找不足。又如,自己对输出这一功能不是很满意,要改进的话则只需在输出函数上做改进。
7 课程设计总结
这一次的课程设计,我再次感到了程序世界的美妙。
记得在分析完问题的要求后,对要写的程序进行了初步的模块划分。当时觉得问题看起来很简单,但是在具体实现的函数编写上遇到了很多的细节问题。在着手解决这些问题的过程中,虽然耗费了不少时间,困难重重,但付出了总会有收获,即使有一些问题自己还没有十分满意的解决掉,但在无形之中自己又增加了不少课外知识和一些以前忽略的知识点,拓宽了自己的视野,提升了自己的动手能力。
最主要的是对单向链表的使用有了更深刻的了解和掌握,因为多项式的计算要求用单向链表来实现,所以在做课程设计之前通过网上找资料,查参考书等对单向链表的使用比以前掌握的更加到位,并且能够灵活运用,通篇几乎用的都是单向链表,这是受益的一大重点。
参考资料
[1] 数据结构教程学习指导(第3版). 李春葆. 北京: 清华大学出版社, 2009
[2] C++程序设计. 谭浩强. 北京: 清华大学出版社, 2008
[3] C++程序设计题解与上机指导. 谭浩强. 北京: 清华大学出版社, 2007
[4] C++程序开发例题与习题. 张基温. 北京: 清华大学出版社, 2001
c语言实现一元多项式的除法,课内资源 - 基于C++的一元多项式的计算相关推荐
- c语言文字冒险类游戏,课内资源 - 基于C语言和easyx实现的巧虎划船大冒险游戏...
1 需求分析 1.1 功能需求 游戏性:通过键盘方向键的←.→.↑.↓来控制巧虎(船)的移动,躲避暗礁,碰撞宝物(特殊宝物),来增加积分,在倒计时结束前(到达终点前)争取得到更多分数.为提高可玩性,宝 ...
- c语言全民飞机游戏代码,课内资源 - 基于VC++和OpenCV实现的全民飞机大战游戏
摘要功能:利用C++语言完成了一个小游戏项目-全民飞机大战,该游戏首先能够给用户提供注册,登录功能:提供了菜单栏及两种游戏模式,一种是无尽模式,另一种是一般模式:一般模式中用户通过控制玩家飞机攻击敌方 ...
- java实现一元多项式减法,课内资源 - 基于C语言实现的一元多项式的计算
一.概述 通过C语言使用链式存储结构实现一元多项式加法.减法和乘法的运算.按指数降序排列. 二.需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式 ...
- C语言编程求解圆盘的汉诺塔,课内资源 - 基于80x86汇编的汉诺塔
一.软件背景介绍 我们今天要陈述的应用叫做汉诺塔,大家可能小时候都接触过类似于鲁班锁,九连环的益智玩具,我们要说的汉诺塔其实也可以说是益智玩具的一种. 下面我们具体介绍一下汉诺塔.汉诺塔有三根杆子A, ...
- c语言外卖程序,课内资源 - 基于C语言的外卖派单模拟系统
一.课题任务概述 你运行一家外卖快递服务店,负责一个区域内的外卖订单接收和餐食快递.你有一笔启动资金,可以招募外卖骑手帮你送餐,来赚取快递费.但你也会面临风险,本区域的订单你都有义务接收,不能拒绝,若 ...
- 用c语言写扫雷游戏倒计时代码,课内资源 - 基于VS2013实现的扫雷小游戏
1.任务概述 1.1 系统总体目标 本项目的目的在于开发一个扫雷软件,该软件面向游戏玩家用户,具有进行扫雷游戏的功能.游戏玩家将使用系统中的如下功能: 进行游戏 使用自定义游戏规格功能 使用计时器功能 ...
- 餐厅管理程序c语言源代码,课内资源 - 基于C++的餐厅管理程序的设计与实现
摘 要 随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,为我们的学习和工作带来极大的方便.很多人都使用过传统的文字,纸张管理手段,与之不同的另外一种管理方式就是利用电脑程序管理 ...
- 数学金字塔C语言原函数,课内资源 - 基于C语言实现的金字塔问题(Pyramid Problem)...
1 开发软件说明 Dev C++是一个 Windows 下的C 和C++程序的集成开发环境,是一款自由软件,遵守GPL 许可协议分发源代码.它使用MingW32/GCC 编译器,遵循 C/C++ 11 ...
- devccp中c语言输入二维数组,课内资源
1 概述1.1 项目简介本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是MFC编程中的一些函数.链表思 ...
最新文章
- ImageMagick简单记录
- HTML Inspector – 帮助你编写高质量的 HTML 代码
- 别人总结的批处理技巧
- python使用matplotlib可视化3D柱状图(3D bar plot、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为y、改变3d图观察的角度
- python小游戏代码大全-Python小游戏之300行代码实现俄罗斯方块
- 奇异面试经历之张冠李戴
- 【报错笔记】关于tomcat启动不了,闪退问题。
- Vue3里的setup中使用vuex
- HttpServletRequest说明
- 2011年 7月6日の朝会文章 手塚 治虫
- spring boot项目发送邮件
- linux 常用脚本
- 大学计算机基础试题 百度网盘,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
- onkeyup+onafterpaste 只能输入数字和小数点
- 计算机弹薛之谦的音乐,薛之谦最火的五首歌,除了《演员》,这三首歌却埋没3年无人知!...
- Office 365组命名策略 - 补充
- 汉字与拼音互转的工具类
- 完全使用gnu/linux工作
- GRE词汇意群法速记
- pygame 实现键盘鼠标映射