资源简介
采用c语言实现的四则运算器源代码,使用了栈和递归,支持括号。国内某知名游戏公司复试题目
代码片段和文件信息
// alWrom.cpp: implementation of the CalWrom class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “alWrom.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CalWrom::CalWrom()
{
m_pFarther = NULL;
m_pChild = NULL;
m_fResult = 0.0f;
}
CalWrom::~CalWrom()
{
}
/************************************************************************/
/* 函数:LevelCmp
/* 说明:比较两个操作符的优先级
/* 参数:
/* a:操作符1
/* b:操作符2
/* 返回值:如果a的优先级大于b,返回1
/* 如果a的优先级等于b,返回0
/* 如果a的优先级小于b,返回-1
/************************************************************************/
int CalWrom::LevelCmp(char const achar const b)
{
int i;
char albl;
for (i=0;i {
if (a == LEVEL_TABLE[i][0])
{
al = LEVEL_TABLE[i][1];
}
if (b == LEVEL_TABLE[i][0])
{
bl = LEVEL_TABLE[i][1];
}
}
if (al > bl)
{
return 1;
}
else if (al < bl)
{
return -1;
}
else
{
return 0;
}
}
/************************************************************************/
/* 函数:Calculate
/* 说明:输入两个数和一个操作符,根据操作符计算两个数的结果
/* 参数:
/* f1:运算式左端数据
/* cOper:操作符
/* f2:运算式右端数据
/* 返回值:返回计算结果
/************************************************************************/
float CalWrom::Calculate(float f1char cOperfloat f2)
{
// printf(“%.2f%c%.2f\n“f1cOperf2);
switch(cOper)
{
case ‘+‘:
return f1 + f2;
case ‘-‘:
return f1 - f2;
case ‘*‘:
return f1 * f2;
case ‘/‘:
return f1 / f2;
default:
break;
}
return 0.0f;
}
/************************************************************************/
/* 函数:IsOperator
/* 说明:判断一个字符是否为操作符
/* 参数:
/* c:需要判断的字符
/* 返回值:如果c是操作符返回true
/* 如果c不是操作符返回false
/************************************************************************/
bool CalWrom::IsOperator(const char c)
{
if (c == ‘+‘
||c == ‘-‘
||c == ‘*‘
||c == ‘/‘
||c == ‘(‘
||c == ‘)‘
)
{
return true;
}
return false;
}
/************************************************************************/
/* 函数:IsData
/* 说明:判断一个字符是被一个数据包含,由于数据可以式float,
/* 因此.也属于数据类型
/* 参数:
/* c:需要判断的字符
/* 返回值:如果c是数据返回true
/* 如果c不是数据返回false
/************************************************************************/
bool CalWrom::IsData(const char c)
{
if ((c >= ‘0‘ && c <= ‘9‘)
||c == ‘.‘)
{
return true;
}
return false;
}
/************************************************************************/
/* 函数:AddOperator
/* 说明:外部向本蠕虫推入一个运算符,需要进行相应处理
/* 参数:
/* cOper:被推入的操作符
/* 返回值:无
/************************************************************************/
void CalWrom::AddOperator(const char cOper)
{
if (cOper == ‘(‘)
{
//第一次收到左括号,开创一个新的计算蠕虫作为括号内的表达式计算器
if (m_pChild == NULL)
{
m_pChild = new CalWrom;
m_pChild->m_pFarther = this;
// printf(“创建一个蠕
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 8072 2008-11-05 20:15 Calculator\alWrom.cpp
I.A.... 4821 2008-11-06 21:30 Calculator\alWrom.h
I.A.... 497 2008-11-05 20:15 Calculator\Calculator.cpp
I.A.... 4886 2008-11-05 20:15 Calculator\Calculator.dsp
I.A.... 545 2008-11-05 20:15 Calculator\Calculator.dsw
I.A.... 1232 2008-11-05 20:15 Calculator\ReadMe.txt
I.A.... 297 2008-11-05 20:15 Calculator\StdAfx.cpp
I.A.... 811 2008-11-05 20:15 Calculator\StdAfx.h
I.A.SHR 429 2008-11-05 20:15 Calculator\vssver2.scc
I.A.... 356 2008-11-05 20:15 Calculator\WormStack.cpp
I.A.... 1655 2008-11-06 21:29 Calculator\WormStack.h
I..D... 0 2008-11-06 21:30 Calculator
----------- --------- ---------- ----- ----
23601 12
- 上一篇:VC++注册码加密源程序含注册机、解密机
- 下一篇:vc++编写的界面源代码
相关资源
- vc++编写的界面源代码
- VC++注册码加密源程序含注册机、解密
- USB 通讯 libusb-win32
- 数据结构类库c++版
- 维吉尼亚加密解密C++实现
- 又一个douglas道格拉斯VC++算法
- c语言实现字典顺序排序
- 一个双色球彩票随机选号器6+1C++源码
- 家庭收支管理系统基于VC++ ACCESS数据库
- C++实现双向链表完整代码
- 东北大学C++实验报告
- 朱战立《面向对象的程序设计与C++语
- UE4C++游戏视频教程
- 掌纹识别c/c++代码
- 功能非常全的数字图像处理程序含源
- C++ DES图像加密与解密
- 传智播客c/c++教程
- 家庭财务系统,可在devc++上直接运行
- 特殊矩阵和压缩存储
- 雅可比迭代C++实现
- 传智播客c++视频
- 发现网络中的活动主机 网络应用课程
- 货品的进销存管理系统,MFC编译
- VC++磁盘MBR读写程序,测试通过
- NSGA2源代码,C++源代码
- 数据结构约瑟夫环实习报告及源码
- C++的库函数
- C++矩阵变换
- windows下C++实现的HTTP web 服务器
- 基于C/C++基础的物品竞拍系统
评论
共有 条评论