#include<string>
#include<cctype>
#include<iostream>
using namespace std;
bool getint(string &s, int &a)
{
int ret = 0;
if (s.size() == 0 || !isdigit(s[0]))
return false;
for (int i = 0, n = (int)s.size(); i < n; i++) {
if (isdigit(s[i]))
ret = ret * 10 + s[i] - '0';
else
{
s = s.substr(i);
a = ret;
return true;
}
}
s = "";
a = ret;
return true;
}
bool getop(string &s, char &a)
{
if (s.size() == 0 || !isgraph(s[0]))
return false;
switch (s[0])
{
case '+':
a = '+';
s = s.substr(1);
return true;
break;
case '-':
a = '-';
s = s.substr(1);
return true;
break;
case '*':
a = '*';
s = s.substr(1);
return true;
break;
case '/':
a = '/';
s = s.substr(1);
return true;
default:
return false;
break;
}
}
bool jisuan(int &a, int &b, char &q) {
if (a == 0 && b == 0) return false;
switch (q) {
case '+':
a += b;
b = 0;
return true;
break;
case '-':
a -= b;
b = 0;
return true;
break;
case '*':
a *= b;
b = 0;
return true;
break;
case '/':
a /= b;
b = 0;
return true;
break;
}
}
int main() {
string s;
cin >> s;
int a, b;
bool i = true;
char q;
if (getint(s, a) && getop(s, q) && getint(s, b))
if (jisuan(a, b, q)) b = 0;
else cout << "出错1" << endl;
else
{
cout << "出错" << endl;
i=false;
}
while (true)
{
if (getop(s, q) && getint(s, b))
{
if (jisuan(a, b, q)) b = 0;
else {
cout << "出错2" << endl;
break;
}
}
else {
cout << "出错" << endl;
i = false;
break;
}
}
if (i) cout << a << endl;
system("pause");
}