Pagini recente » Cod sursa (job #2661866) | Cod sursa (job #107353) | Cod sursa (job #1957117) | Cod sursa (job #1276756) | Cod sursa (job #3192670)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100005];
int pos;
int add();
int mult();
int fact();
int add()
{
int res = mult();
while(s[pos]=='+' || s[pos]=='-')
{
if(s[pos]=='+')
{
pos++;
res+=mult();
}
else
{
pos++;
res-=mult();
}
}
return res;
}
int mult()
{
int res = fact();
while(s[pos]=='*' || s[pos]=='/')
{
if(s[pos]=='*')
{
pos++;
res*=fact();
}
else
{
pos++;
res/=fact();
}
}
return res;
}
int fact()
{
int res=0;
if(s[pos]=='(')
{
pos++;
res=add();
pos++;
}
else
{
while(isdigit(s[pos]))
{
res=res*10+(s[pos]-'0');
pos++;
}
}
return res;
}
int main()
{
fin>>s;
fout<<add();
return 0;
}