Pagini recente » Cod sursa (job #2145409) | Cod sursa (job #2351743) | Cod sursa (job #2204746) | Cod sursa (job #1061495) | Cod sursa (job #3003896)
#include <fstream>
#include <string>
#include <cstring>
#include <cctype>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int indice;
int termen();
int factor();
int eval()
{
int r = termen();
while(s[indice] == '+' || s[indice] == '-')
{
if(s[indice] == '+')
{
++indice;
r+=termen();
break;
}
else
{
++indice;
r-=termen();
break;
}
}
return r;
}
int termen()
{
int r = factor();
while(s[indice] == '*' || s[indice] == '/')
{
if(s[indice] == '*')
{
++indice;
r *= factor();
break;
}
else
{
++indice;
r /= factor();
break;
}
}
return r;
}
int factor()
{
int r = 0;
if(s[indice] == '(')
{
++indice;
r = eval();
++indice;
}
else
{
while(isdigit(s[indice]))
{
r = r*10 + s[indice] - '0';
++indice;
}
}
return r;
}
int main()
{
fin >> s;
fout << eval();
return 0;
}