Cod sursa(job #2812514)
| Utilizator | Data | 4 decembrie 2021 17:10:07 | |
|---|---|---|---|
| Problema | Evaluarea unei expresii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.96 kb |
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int E();int F();int T();
int p;
char s[100005];
int E()
{
int r=T();
while(s[p]=='+' || s[p]=='-')
{
if(s[p]=='+')
{
++p;
r+=T();
}
else
{
++p;
r-=T();
}
}
return r;
}
int T()
{
int t=F();
while(s[p]=='*' || s[p]=='/')
{
if(s[p]=='*')
{
++p;
t*=F();
}
else
{
++p;
t/=F();
}
}
return t;
}
int F()
{
int r=0;
if(s[p]=='(')
{
++p;
r=E();
++p;
}
else
{
while(s[p]>='0' && s[p]<='9')
{
r*=10;
r+=s[p]-'0';
p++;
}
}
return r;
}
int main()
{
fin>>s;
fout<<E();
}
