📄 function.cpp
字号:
/*
* 学 号:B05031126
*
* 作 者:南京邮电大学计算机学院 吴登荣
*
* 摘 要:本程序是一个完整的后缀表达式计算,主要用栈的操作实现,本程序封装了CStack类实现
* 栈的操作,本程序最大的特色在乎运用实时监控的算法对表达式进行数据校验,对一切合
* 法的表达式进行计算,检验出所有任何非法表达式并提示。
*
* 完成日期:2006年9月25日
*
* E - mail:Jeffrey.nupt@gmail.com
*/
//
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "B05031126.h"
#include "Function.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//检验输入表达式是否含有非法数据,若没有,则返回1,否则返回0
int check(CString expression)
{
int flag=1;
if(expression.GetLength()==0)
{
return 0;
}//判断表达式空
if((expression[0]=='+')||(expression[0]=='-')||(expression[0]=='*')||(expression[0]=='/'))
{
return 0;
}//判断第一个字符是否是运算符
for(int i=0;i<expression.GetLength();i++)
{
if((expression[i]!='+')&&(expression[i]!='-')&&(expression[i]!='*')&&(expression[i]!='/')&&(expression[i]!=' '))
if((expression[i]<'0')||(expression[i]>'9'))
{
flag=0;
}
}//判断是否出现非法字符
return flag;
}
//去处表达式中间多余的空格
CString trimblank(CString expression)
{
for(int i=0;i<expression.GetLength();i++)
{
if(expression[i]==' ')
{
int k=i+1;
while(expression[k]==' ')
k++;
for(int j=k;j<expression.GetLength();j++)
{
expression.SetAt(j-k+i+1,expression[j]);//将多余的空格去除
}
for(j=expression.GetLength()-k+i+1;j<expression.GetLength();j++)
{
expression.SetAt(j,' ');//讲最后留下的字符去除
}
expression.TrimRight();//去掉最后的空格
}
}
return expression;
}
//返回表达式中的运算符号的个数
int getop(CString expression)
{
int total=0;
for(int i=0;i<expression.GetLength();i++)
{
if((expression[i]=='+')||(expression[i]=='-')||(expression[i]=='*')||(expression[i]=='/'))
total++;
}
return total;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -