资源简介
计算器类: 设计一个计算器类模板,适用各类型表达式的“+、-、×、/” 数学四则运算以及“>、>=、<、<=、!=、==”等关系运算。数学四则运算表达式中可含有加、减、乘、除运算符以及各型数据的运算对象。程序可以直接输入数学表达式以及关系表达式,不需要任何转换,就可以直接输出数学四则运算和逻辑运算的结果。并且操作简单、界面清晰、灵活、实用、方便等。(系统功能可充分自由发挥)。
扩展功能:三角运算、进制转换、开方、幂指数等。
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
//判断是否为括号
bool isPra(char c)
{
if(c==‘(‘||c==‘)‘)
return true;
else
return false;
}
//获得符号的优先性
int getPri(char c)
{
switch(c)
{
case ‘+‘:
case ‘-‘:
return 0; //如果是加减,返回0
break;
case ‘*‘:
case ‘/‘:
return 1; //如果是乘除,返回1
break;
case ‘(‘:
case ‘)‘:
return -1; //注意,这里将括号设为最低优先级,因此括号不会被弹出,除非遇到右括号
break;
}
}
//判断符号的优先性
void check(char c stack& coll2 deque& coll3)
{
if(coll2.empty())
{
coll2.push(c);
return;
}
if(isPra(c))
{
if(c==‘(‘)
coll2.push(c);
else
{
//弹出所有元素直到遇到左括号
while(coll2.top()!=‘(‘)
{
char ch = coll2.top();
coll3.push_back(ch);
coll2.pop();
}
//当遇到左括号时,弹出但不加入coll3(后缀表达式中)
coll2.pop();
}
}
else //如果不是括号
{
//取出栈顶元素,与当前符号进行优先性比较
char sym = coll2.top();
//比较两符号的优先性
if(getPri(c)<=getPri(sym))
{
//如果c的优先性比栈顶符号小或等于,弹出栈顶元素
coll2.pop();
//并将其压入coll3(后缀表达式)中
coll3.push_back(sym);
//递归调用check比较当前符号c与下一个栈顶符号的优先性
check(ccoll2coll3);
}
else
{
//如果c比栈顶符号优先级大,那将c压入coll2(操作符栈)中
coll2.push(c);
}
}
}
//从coll中取出元素,分配元素到coll2和coll3中
void allocate(deque& coll1 stack& coll2 deque& coll3)
{
while(!coll1.empty())
{
char c = coll1.front();
coll1.pop_front();
if(c>=‘0‘&&c<=‘9‘)
{
coll3.push_back(c);
}
else
{
//调用check函数,针对不同情况作出不同操作
check(ccoll2coll3);
}
}
//如果输入结束,将coll2的元素全部弹出,加入后缀表达式中
while(!coll2.empty())
{
char c = coll2.top();
coll3.push_back(c);
coll2.pop();
}
}
//计算后缀表达式
void calculate(deque& coll3 stack& coll4)
{
while(!coll3.empty())
{
char c = coll3.front();
coll3.pop_front();
//如果是操作数,压入栈中
if(c>=‘0‘&&c<=‘9‘)
{
//减去‘0‘得出偏移值,即为真实数值(如果直接转换成int,结果不对,因为char 转换为int是其编码值,例如‘1‘的编码值为49
int op = c-‘0‘;
coll4.push(op);
}
else //如果是操作符,从栈中弹出元素进行计算
{
int op1 = coll4.top();
coll4.pop();
int op2 = coll4.top();
coll4.pop();
switch(c)
{
case ‘+‘:
coll4.push(op2+op1);
break;
case ‘-‘:
coll4.push(op2-op1);
break;
case ‘*‘:
coll4.push(op2*op1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-07-06 21:28 计算器类\
文件 4154 2015-06-18 13:03 计算器类\calculate.cpp
文件 1006134 2015-07-06 21:28 计算器类\calculate.exe
文件 74339 2015-07-06 21:28 计算器类\calculate.o
- 上一篇:根据JSON导出图集的小图V2.0
- 下一篇:虚拟示波器软件+stm32测试程序
评论
共有 条评论