//更多更新代码以及开发文档下载请访问missingwall.org 灰色迷墙 CSDN发表有延迟
#include < iostream >
#include < cstdlib >
#include < cctype >
using namespace std;
// function reg
int addsubt();
int multdiv();
int number();
void error();
// 全局表达式缓冲器
static char expr[ 81 ]; // 存储输入字符串
static int pos; // 字符串下标
////
// int main
////
int main()
{
int ans;
do
{
//初始化下标
pos = 0;
//read
cin >>expr;
//求值
ans = addsubt();
if(expr[pos] != '')
error();
if(ans!=0)
cout<<ans<<endl;
}
while (ans != 0);
return 0;
}
//
//
//
int addsubt()
{
int rtn = multdiv();
while (expr[pos] == '+' || expr[pos] == '-')
{
int op = expr[pos++];
int opr2 = multdiv();
if(op == '+')
rtn +=opr2;
else
rtn -=opr2;
}
return rtn;
}
///
int multdiv()
{
int rtn = number();
while(expr[pos] == '*' || expr[pos] == '/')
{
int op =expr[pos++];
int opr2 = number();
if(op == '*')
rtn *=opr2;
else
rtn /=opr2;
}
return rtn;
}
/////
int number()
{
int rtn;
if(expr[pos] == '(')
{
pos++;
rtn = addsubt();//back to top
if(expr[pos++] != ')')
error();
return rtn;
}
//square
if(!isdigit(expr[pos]))
error();
rtn = atoi(expr+pos);
while(isdigit(expr[pos]))
pos++;
return rtn;
}
///
void error()
{
cout<<' ';
while(pos--)//放置错误指针
cout<<' ';
exit(-1);
}
#include < iostream >
#include < cstdlib >
#include < cctype >
using namespace std;
// function reg
int addsubt();
int multdiv();
int number();
void error();
// 全局表达式缓冲器
static char expr[ 81 ]; // 存储输入字符串
static int pos; // 字符串下标
////
// int main
////
int main()
{
int ans;
do
{
//初始化下标
pos = 0;
//read
cin >>expr;
//求值
ans = addsubt();
if(expr[pos] != '')
error();
if(ans!=0)
cout<<ans<<endl;
}
while (ans != 0);
return 0;
}
//
//
//
int addsubt()
{
int rtn = multdiv();
while (expr[pos] == '+' || expr[pos] == '-')
{
int op = expr[pos++];
int opr2 = multdiv();
if(op == '+')
rtn +=opr2;
else
rtn -=opr2;
}
return rtn;
}
///
int multdiv()
{
int rtn = number();
while(expr[pos] == '*' || expr[pos] == '/')
{
int op =expr[pos++];
int opr2 = number();
if(op == '*')
rtn *=opr2;
else
rtn /=opr2;
}
return rtn;
}
/////
int number()
{
int rtn;
if(expr[pos] == '(')
{
pos++;
rtn = addsubt();//back to top
if(expr[pos++] != ')')
error();
return rtn;
}
//square
if(!isdigit(expr[pos]))
error();
rtn = atoi(expr+pos);
while(isdigit(expr[pos]))
pos++;
return rtn;
}
///
void error()
{
cout<<' ';
while(pos--)//放置错误指针
cout<<' ';
exit(-1);
}