Pagini recente » Cod sursa (job #139037) | Cod sursa (job #828835) | Cod sursa (job #129441) | Cod sursa (job #1169632) | Cod sursa (job #2719493)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100100];
int p;
int evaluare();
int termen();
int factor();
int evaluare()
{
int ans = termen();
while(s[p] == '+' || s[p] == '-')
{
if(s[p] == '+')
{
p++;
ans += termen();
}
else if(s[p] == '-')
{
p++;
ans -= termen();
}
}
return ans;
}
int termen()
{
int ans = factor();
while(s[p] == '*' || s[p] == '/')
{
if(s[p] == '*')
{
p++;
ans *= factor();
}
else if(s[p] == '/')
{
p++;
ans /= factor();
}
}
return ans;
}
int factor()
{
int ans = 0;
if(s[p] == '(')
{
p++;
ans = evaluare();
p++;
return ans;
}
int nr = 0;
while(isdigit(s[p]))
{
nr = nr * 10 + s[p] - '0';
p++;
}
return nr;
}
int main()
{
fin.getline(s,100001);
fout << evaluare();
return 0;
}