算术表达式的求解 给定一个算术表达式,通过程序求出最后的结果基本要求:\x05(1)从键盘输入要求解的算术表达式;\x05(2)采用栈结构进行算术表达式的求解过程;\x05(3)能够判断算术表达式
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 18:36:40
![算术表达式的求解 给定一个算术表达式,通过程序求出最后的结果基本要求:\x05(1)从键盘输入要求解的算术表达式;\x05(2)采用栈结构进行算术表达式的求解过程;\x05(3)能够判断算术表达式](/uploads/image/z/3693090-66-0.jpg?t=%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%B1%82%E8%A7%A3+%E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%2C%E9%80%9A%E8%BF%87%E7%A8%8B%E5%BA%8F%E6%B1%82%E5%87%BA%E6%9C%80%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E5%9F%BA%E6%9C%AC%E8%A6%81%E6%B1%82%EF%BC%9A%5Cx05%281%29%E4%BB%8E%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%E8%A6%81%E6%B1%82%E8%A7%A3%E7%9A%84%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%9B%5Cx05%282%29%E9%87%87%E7%94%A8%E6%A0%88%E7%BB%93%E6%9E%84%E8%BF%9B%E8%A1%8C%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%B1%82%E8%A7%A3%E8%BF%87%E7%A8%8B%EF%BC%9B%5Cx05%283%29%E8%83%BD%E5%A4%9F%E5%88%A4%E6%96%AD%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F)
算术表达式的求解 给定一个算术表达式,通过程序求出最后的结果基本要求:\x05(1)从键盘输入要求解的算术表达式;\x05(2)采用栈结构进行算术表达式的求解过程;\x05(3)能够判断算术表达式
算术表达式的求解 给定一个算术表达式,通过程序求出最后的结果
基本要求:
\x05(1)从键盘输入要求解的算术表达式;
\x05(2)采用栈结构进行算术表达式的求解过程;
\x05(3)能够判断算术表达式正确与否;
\x05(4)对于错误表达式给出提示;
\x05(5)对于正确的表达式给出最后的结果;
算术表达式的求解 给定一个算术表达式,通过程序求出最后的结果基本要求:\x05(1)从键盘输入要求解的算术表达式;\x05(2)采用栈结构进行算术表达式的求解过程;\x05(3)能够判断算术表达式
ComlexCalcOperator.h
#ifndef __COMPLEXCALCOPERATOR_H_
#define __COMPLEXCALCOPERATOR_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class ComplexCalcOperator
{
public:
\x05ComplexCalcOperator();
\x05~ComplexCalcOperator();
\x05int Calc(
\x05\x05char *lpszStr,
\x05\x05const int iStrLen,
\x05\x05float* fCalcResult );
\x05
private:
\x05inline bool IsOperator( const char chCur ){
\x05\x05switch( chCur )
\x05\x05{
\x05\x05case '+':
\x05\x05case '-':
\x05\x05case '*':
\x05\x05case '/':
\x05\x05case '(':
\x05\x05case ')':
\x05\x05case '=':
\x05\x05\x05return true;
\x05\x05default:
\x05\x05\x05return false;
\x05\x05}
\x05}
\x05
\x05inline bool IsNumberStart( const char* chCur ){
\x05\x05int length = strlen( chCur );
\x05\x05if (( *chCur >= '0') && ( *chCur 1 ){
\x05\x05\x05\x05switch( *( chCur + 1 ))
\x05\x05\x05\x05{
\x05\x05\x05\x05case '+':
\x05\x05\x05\x05case '-':
\x05\x05\x05\x05case '*':
\x05\x05\x05\x05case '/':
\x05\x05\x05\x05case '(':
\x05\x05\x05\x05case ')':
\x05\x05\x05\x05case '=':
\x05\x05\x05\x05case '#':
\x05\x05\x05\x05\x05return true;
\x05\x05\x05\x05case '.':
\x05\x05\x05\x05\x05if ( length > 2 ){
\x05\x05\x05\x05\x05\x05if (('0' = *( chCur + 2 )))
\x05\x05\x05\x05\x05\x05\x05return true;
\x05\x05\x05\x05\x05}
\x05\x05\x05\x05\x05break;
\x05\x05\x05\x05default:
\x05\x05\x05\x05\x05if ( '0' != *chCur ){
\x05\x05\x05\x05\x05\x05if (('0' = *( chCur + 1 )))
\x05\x05\x05\x05\x05\x05return true;
\x05\x05\x05\x05\x05}
\x05\x05\x05\x05\x05else
\x05\x05\x05\x05\x05\x05if ( IsOperator( *( chCur + 1)) || ( '#' == *( chCur + 1 )))
\x05\x05\x05\x05\x05\x05\x05return true;
\x05\x05\x05\x05}
\x05\x05\x05}
\x05\x05}
\x05\x05
\x05\x05return false;
\x05}
\x05
\x05bool Calc( const float fLeft,
\x05\x05const float fRight,
\x05\x05const char chOp,
\x05\x05float& fResult );
};
#endif
ComplexCalcOperator.cpp
#include "stdafx.h"
#include
#include
#include "ComplexCalcOperator.h"
#define FLOAT_EQ( x,v ) (((( v ) - FLT_EPSILON ) < (x)) && ((x)