资源简介

采用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


评论

共有 条评论