Pagini recente » Cod sursa (job #1283014) | Cod sursa (job #3150043) | Cod sursa (job #1178086) | Cod sursa (job #1147) | Cod sursa (job #2329512)
#include<fstream>
#include<cstdio>
#include<cctype>
#include<vector>
#include<cstring>
#include<algorithm>
#define pb push_back
#define x first
#define y second
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int DN=1e5+5;
int poz,n;
char a[DN];
int eval();
int termen();
int factor();
int eval()
{
int f,g,rez=0;
if(poz>n)
return 0;
f=termen();
rez=f;
while(1)
{
if(poz>n)
break;
if(a[poz]=='+')
{
poz++;
rez+=termen();
}
else
if(a[poz]=='-')
{
poz++;
rez-=termen();
}
else
break;
}
return rez;
}
int termen()
{
int f,g,rez=0;
if(poz>n)
return 0;
f=factor();
rez=f;
while(1)
{
if(poz>n)
break;
if(a[poz]=='*')
{
poz++;
rez*=factor();
}
else
if(a[poz]=='/')
{
poz++;
rez/=factor();
}
else
break;
}
return rez;
}
int factor()
{
int rez=0;
if(poz>n)
return 0;
if(a[poz]=='(')
{
poz++;
rez=eval();
poz++;
return rez;
}
while(isdigit(a[poz]))
{
rez=rez*10+a[poz]-'0';
poz++;
}
return rez;
}
int main()
{
fin.getline(a+1,DN);
poz=1;
n=strlen(a+1);
fout<<eval();
}