C++面向对象程序设计
} oper.pop(); continue; }
if (c=='=') //遇到‘=’号,输出结果; {
if (pr) {cout<<\括号数目不匹配,请检查并重新输入!\ if (used) num.push(t);
while(!oper.empty()) tozhan(num,oper); cout<<\表达式的值为: \ return; }
else {cout<<\表达式输入错误,请重新输入!\ } }
bool judge(char s,char t) {
if ((s=='*'||s=='/')&&(t=='+'||t=='-')) return true; if (s=='.') return true;
10
C++面向对象程序设计
return false; }
void tozhan(stack
b=num.top();num.pop(); a=num.top();num.pop(); switch( oper.top() ) {
case ('+'):r= a+b;break; case ('-'):r= a-b;break; case ('*'):r= a*b;break; case ('/'):r= a/b;break; case ('.'):r=fraction(a,b); };
num.push(r); oper.pop(); }
float fraction(float m, float n) //处理小数 {
11
C++面向对象程序设计
while (n>=1) n/=10; n+=m; return n; }
4.2运行结果
12
C++面向对象程序设计
13
C++面向对象程序设计
14
C++面向对象程序设计
结 论
本程序基本完成了题目要求的功能。此计算器有运算的能力。但是功能单一,每次只能进行一次运算,而不能重复操作,并且对于数据的N次平方的操作需要进行多次数据与“*”的多次重复输入,比较复杂,在时空方面占据劣势。
本软件应用起来不是很方便,特别是输入的一些字符的时候,必须是英文半角,不然会提示语法错误,最不实际的就是不能运用求值。但是可以通过增加判断条件,使之对输入形式不拘一格.
这次课程设计,我更加深刻地认识到了C语言,栈,C++面向对象编程三者之间的区别和联系,同时也体会到了三者联合的优势,清楚的认识到基础的重要性。甚至连复杂的程式都可以用简单的算法表现出来,或许这就是程序由繁入简的最终奥义吧。
对于这次设计,也发现了自己这程序方面还是很不行,但是这次课程设计让我感受到了学习的过程才是最重要的,更加欣喜的是也让我获得短暂的成就感和充实感。
参 考 文 献
1 谭浩强著. C++面向对象程序设计. 北京:清华大学出版社,2010 2 谭浩强著. C程序设计(第三版). 北京:清华大学出版社,2008
3 严蔚敏著. 数据结构(C语言版). 北京:清华大学出版社,2008
15
C++ 计算器 课程设计模板资料



