C++面向对象程序设计
2.定义判断函数 bool judge()
{//判断是不是加减乘除与浮点数}
3.定义对栈函数
void tozhan(stack
{//初始界面显示;数字类字符与数字转换压入数字栈;考虑
优先级调整运算顺序;括号及输出处理} 5定义小数运算函数 float fraction() {//处理小数}
3.3 输入输出的设计
①、界面设计
程序运行后会出现一个简捷的窗口,并有相应的操作提示语,便于用户操作。 ②、功能设计
数据输入完成后,软件运行时自动调用不同的函数模块实现不同的运算,结束时将输入算式和结果以等式的形式在界面输出,输出后可按任意键退出。
5
C++面向对象程序设计
第4章 软件实现
4.1软件源代码
#include
void first() //定义界面函数 {
cout<<\---\
cout<<\ 欢迎使用计算器 \
cout<<\---\
cout<<\【该计算器具备整型数据、浮点型数据的算术(加、减、乘、除)运算 】\
cout<<\【功能。依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,】\
cout<<\【然后输出结果。实现单运算符表达式计算的功能。输入的操作数可以包】\
6
C++面向对象程序设计
cout<<\【含整数或浮点数。如果遇到错误的表达式,应输出错误提示信息。表达】\
cout<<\【式可以有括号,并且+-*/分优先级的 】\ cout< void mem(); bool judge(char,char); void tozhan(stack void mem() { first(); int used,pr; float t; char c; stack 7 C++面向对象程序设计 stack cout<<\请输入待求表达式:\ while(cin>>c, !cin.eof()) { if (isdigit(c)) { used=1; t=t*10+(c-'0'); continue; } //将输入的数字类字符转换成数字; if (c=='+'||c=='-'||c=='*'||c=='/'||c=='.') { if(used) { num.push(t); t=0; used=0; } //将转化好的数字压入数字栈; if (oper.empty()||oper.top()=='(') {oper.push(c);continue;} //向操作符栈里压入第一个操作符;解决括号问题; 8 C++面向对象程序设计 while(!judge(c,oper.top())) { tozhan(num,oper); if (oper.empty()||oper.top()=='(') break; } //根据运算符号优先级,调整运算顺序,并处理优先运算部分; oper.push(c); continue; } if (c=='(') { pr++;oper.push(c);continue; //括号入栈,作为括号内运算的标志; } if (c==')') { pr--; //括号结束,整理括号内的运算结果; if (used) {num.push(t);t=0;used=0;} while(!oper.empty()) { if (oper.top()=='(') break; tozhan(num,oper); 9