#include <iostream>
#include <math.h>
#include <cstring>
using namespace std;
char buf[35];
int result;
int main()
{
int calcu(int i, int j);
memset(buf, 0, sizeof(buf));
while(cin.getline(buf, 35))
{
result = 0;
int i, j, result = 0;
cout << calcu(0, strlen(buf)) << endl;
}
return 0;
}
int getNum(int begin, int end)
{
int result = 0;
for(int i = begin; i < end; i++)
{
result = result * 10 + (buf[i] - '0');
}
return result;
}
int calcu(int begin, int end)
{
int i, j;
for(i = begin; i < end; i++)
{
if(buf[i] == '+')
{
return (calcu(begin, i) + calcu(i + 1, end));
}
}
for(i = end - 1; i >= begin; i--)
{
if(buf[i] == '-')
{
return (calcu(begin, i) - calcu(i + 1, end));
}
}
int xmark = 0;
int r = 0;
for(i = begin; i < end; i++)
{
if(buf[i] == 'x')
{
xmark = 1;
if(buf[i + 1] == '^')
{
r = pow((double)3, getNum(i + 2, end));
if(i != begin)
{
r *= getNum(begin, i);
}
}
else if(begin + 1 == end)
{
r = 3;
}
else
{
r = 3 * getNum(begin, i);
}
}
}
if(!xmark)
{
r = getNum(begin, end);
}
return r;
}
有未知数的表达式
最新推荐文章于 2022-06-01 11:24:16 发布