Pagini recente » Cod sursa (job #1009366) | Cod sursa (job #214537) | Cod sursa (job #2349824) | Cod sursa (job #289965) | Cod sursa (job #2721835)
#include <bits/stdc++.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen();
int factor();
int poz,n;
char s[100005];
int eval()
{
int rez=termen();
while (poz<n&&(s[poz]=='+'||s[poz]=='-'))
{
if (s[poz]=='+')
{
poz++;
rez=rez+termen();
}
else
{
poz++;
rez=rez-termen();
}
}
return rez;
}
int termen()
{
int rez=factor();
while (poz<n&&(s[poz]=='*'||s[poz]=='/'))
{
if (s[poz]=='*')
{
poz++;
rez=rez*factor();
}
else
if (s[poz]=='/')
{
poz++;
rez=rez/factor();
}
}
return rez;
}
int factor()
{
int rez=0;
if (s[poz]=='(')
{
poz++;
rez=eval();
poz++;
}
int semn=1;
if (s[poz]=='-')
{
semn=-1;
poz++;
}
while (poz<n&&('0'<=s[poz]&&s[poz]<='9'))
{
rez=rez*10+(s[poz]-'0');
poz++;
}
return rez*semn;
}
int main()
{
f>>s;
n=strlen(s);
g<<eval();
return 0;
}