多项式计算器。
1 多项式计算器描述。
1.1 项目的目的。
我们模拟一个逆序波兰计算器,起操作数(此处为多项式)在操作制定前输入,操作数将被压入栈中,操作在执行时,会从栈中弹出操作数,然后将操作结果又压回栈中。我们再次使用逆序波兰表达式的约定,?表示将操作数压入栈,+,表示算术运算,=表示打印出栈顶元素(不弹出).
例如指令?a?b+=以为这读两个操作数a和b,然后计算并打印他们的和。
1.2 主程序。
我们实现了一个用于计算器的类polynomial,这样可以简化设计计算器程序的任务。我们定制泛型栈实现使用多项式元素,然后主程序能够声明一个多项式栈,接受新的命令,并且只要希望就可以执行它们。
int main()
polynomial p;
cout<<"这是第一个测试:对输入的值赋给多项式得出结果:输入一个多项式:"<
float a;
cout<<"输入a的值:"
cout<< a)< cout<<"n这是第二个测试:对多项式实施四则运算::";
stack stored_polynomials;
introduction();
instructions();
while (do_command(get_command(),stored_polynomials));
return 0;
1.3 多项式方法。
p120 多项式方法。
1.4 执行命令。
在这个函数中,我们通过引用去传递stack的参数,因为它的值可能需要修改。例如,如果命令参数是+,那么通常是从栈中弹出两个多项式并且将它们的和入栈。函数do_command也允许附加的用户命令q用来退出程序。
2 多项式数据结构。
2.1 多项式的实质。
p1222.2 多项式的实现。
p1223 模块划分。
3.1 读写多项式。
标准的约定。
以链式去实现多项式时,写出多项式是一件简单的事,只要在队列的节点上循环并输出每个节点的数据。下面的print方法的复杂特性只是习惯的反映,是用于书写多项式的特殊约定,而不是对我们的数据结构进行处理所产生的任何概念上的困难。特别地,我们的方法取消了任何初始的’+’号、值为1 的系数和指数以及任何涉及x0的引用,因此我们会自习地输入3x2+x+5和-3x2+1而不是+3x2+1x1+5x0和-3x2+1x0
void polynomial::pread()
clear();
double coefficient;
int last_exponent,exponent;
bool first_term=true;
cout<<"为多项式输入指数和系数,"
<<"一次要按提示输入一个系数和一个指数,次数要以降次的顺序输入。"<输入0即结束。" }while (coefficient!=0.0 &&exponent!=0); 3.2 多项式加法。 要求polynomial的项在相应extended_queue中以指数的降序出现大大简化了其加法操作。此时为了将两个多项式相加,只需要每次一个地横扫他们,如果发现两个多项式有同样指数的项,则将他们的系数相加;否则,只需将指数较大的项复制到和中,并移至多项式中的下一项。再次过程中,注意不要讲0系数的项放入和里。 void polynomial::padd(polynomial p,polynomial q) clear(); while(! term p_term,q_term; if( (else if ( else 3.3 多项式减法。 要求polynomial的项在相应extended_queue中以指数的降序出现大大简化了其减法操作。此时为了将两个多项式相减,只需要每次一个地横扫他们,如果发现两个多项式有同样指数的项,则将他们的系数相减,系数为0项在节点中删除;否则,只需将指数较大的项复制到差中,并移至多项式中的下一项。再次过程中,注意不要讲0系数的项放入差里。 void polynomial::psub(polynomial p,polynomial q) clear(); while(! term p_term,q_term; if( (else if ( else 3.4 多项式乘法。 要求polynomial的项在相应extended_queue中以指数的降序出现大大简化了其乘法操作。此时为了将两个多项式相乘,将原来的多项式保存,然后用于读入的多项式拆分为一项一项的,分别同原多项式相乘,这时只需系数乘系数,指数加指数,然后一直将所有输入的多项式分别相乘,加和。 乘法运算的单项乘。 void polynomial::mult_term(polynomial p,term t) /多项式乘法运算。 void polynomial::pmult(polynomial p,polynomial q) 4 自定义数据类型及描述。 term struct结构体类型,用于保存一个多项式,含2个参数degree(int)指数,coefficient(double)系数。 node struct结构体类型,用户保存一个多项式,用于queue类中在,作为一个节点存在,含有2个参数entry(term)保存数据, next(*node)指向下一个节点。 queue 类,含有2个private数据front(*node),rear(*node)指向新的node,而加到非空的queue仅需改变rear;8个public函数,用链式结构存储多项式方程。 extended_queue类,继承自queue,扩展size(),full(),clear(),serve_and_retrieve(queue_entry &item)四个函数。 polynomian类,扩展自extended_queue,提供多项式之间的加减乘除功能。 stack类,用栈式结构存储多项式。函数类似于queue term 别名node_entry,queue_entry polynomial别名stack_entry 5 测试数据。 数据输入和保存,依次输入1 3 2 2 3 1 0 = 加法,在上个输入的基础上依次输入? 1 4 2 3 3 2 4 1 0 * 减法,在上一个的基础上依次输入1 3 2 2 3 1 0 - 乘法,依次输入1 4 2 3 3 2 4 1 0 ? 2 2 0 * 6 结果分析。 7 程序**。 #include"" bool do_command(char command,stack &stored_polynomials) polynomial p,q,r; switch (command){ case '? 洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每... 课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动... 学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...课程设计报告格式 课程设计
课程设计总结,课程设计报告
课程设计 课程设计报告格式