Pagini recente » Cod sursa (job #2749590) | Cod sursa (job #2370850) | Cod sursa (job #389609) | Cod sursa (job #2062282) | Cod sursa (job #3272639)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
string s;
int eval();
int termen();
int factor();
int main()
{
fin >> s;
s += '$';
fout << eval();
return 0;
}
int eval()
{
int rez = termen();
while(s[i] == '+' || s[i] == '-')
{
if(s[i] == '+')
{
i++;
rez += termen();
}
else if(s[i] == '-')
{
i++;
rez -= termen();
}
}
return rez;
}
int termen()
{
int rez = factor();
while(s[i] == '*' || s[i] == '/')
{
if(s[i] == '*')
{
i++;
rez *= factor();
}
else if(s[i] == '/')
{
i++;
rez /= factor();
}
}
return rez;
}
int factor()
{
int rez = 0;
if(s[i] == '(')
{
i++;
rez = eval();
i++;
}
else while(isdigit(s[i]))
rez = rez * 10 + s[i] - '0', i++;
return rez;
}