资源简介
利用栈实现科学计算器的连续输入求值,自动选择运算优先级,提示括号的不匹配以及各种输入错误。
代码片段和文件信息
#include “StdAfx.h“
#include “Calculator.h“
#include
#include
bool Calculator::DoOperator(char op)
{
double liftrightvalue;bool result;
result=Get2Operands(liftright);
if(result==true)
{
switch(op)
{
case‘+‘:value=lift+right;s.push(value);break;
case‘~‘:value=lift-right;s.push(value);break;
case‘*‘:value=lift*right;s.push(value);break;
case‘/‘:if(right==0.0)
{
AfxMessageBox(“Divide by 0!“);
Clear();
}
else{value=lift/right;s.push(value);}
break;
}
return true;
}
else
{
Clear();
return false;
}
}
bool Calculator::Get2Operands(double& liftdouble& right)
{
if(s.empty()==true)
{
AfxMessageBox(“缺少右操作数“);
return false;
}
right=s.top();s.pop();
if(s.empty()==true)
{
AfxMessageBox(“缺少左操作数“);
return false;
}
lift=s.top();s.pop();
return true;
}
bool Calculator::Run(CString& str2)
{
std::stringstream is(str2.GetBuffer());
char ch;double a;is>>ch;
while(ch!=‘#‘)
{
if(isdigit(ch))
{
is.putback(ch);
is>>a;s.push(a);
}
else if(ch==‘-‘)
{
is.putback(ch);
is>>a;s.push(a);
}
switch(ch)
{
case‘+‘:case‘~‘:case‘*‘:case‘/‘:
if(DoOperator(ch)==true)
break;
else
return false;
}
is>>ch;
}
str2.Format(“%f“a=s.top());
return true;
}
void Calculator::Clear()
{
- 上一篇:用C语言解线性方程组
- 下一篇:C语言迷宫小游戏课程设计
相关资源
- C语言课设计算器
- 基于51单片机的简易计算器
- 多功能计算器实现C++代码以及代码详
- C++简单计算器的实现
- C++版计算器带括号dos版本
- VC++课程设计 计算器
- VC仿Xp计算器
- VS2008 MFC简易计算器
- MFC登录注册系统C++
- 数据结构课程设计,C++计算器MFC
- MFC计算器编程,可视化,含详细实现
- MFC实现简单计算器支持加减乘除和括
- VC++ 对话框 滚轮 计算器
- C++课程设计计算器MFC
- 多功能计算器 vc++ mfc
- vc60写的四则混合运算计算器
- C++中,用mfc做的可视化的计算器程序
- mfc简单四则运算计算器
- VC++科学计算器源代码
- VC计算器 用VC++设计一个计算器,功能
- MFC表达式计算器
- 基于循环双向链表的大整数计算器c
- VC计算器,完整的案例,适合MFC和VC
- 个人所得税计算器c语言
- MFC基于逆波兰算法的四则运算计算器
- C++ MFC 简单计算器完善+注释
- C语言在vc下编写的Windows窗口小程序
- 教学工作量计算器
- VC++实现的计算器,用MFC实现界面操作
- C++MFC实训_计算器_附实训报告
评论
共有 条评论