Pagini recente » Cod sursa (job #712341) | Cod sursa (job #2833521) | Cod sursa (job #1145392) | Cod sursa (job #2088963) | Cod sursa (job #1340044)
#include<fstream>
#include<string.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char e[100001];
int n,i;
int eval();
int factor();
int termen();
int exp();
int eval()
{
int f=0;
f=e[i]-'0';
while(e[i+1]>='0'&&e[i+1]<='9')
{
i++; f=f*10+(e[i]-'0');
}
return f;
}
int factor()
{
int f;
if(e[i]=='(')
{
i++;
f=exp();
i++;
}
else { f=eval();
i++;
}
return f;
}
int termen()
{
int f=factor();
while(i<n&&(e[i]=='*'||e[i]=='/'))
if(e[i]=='*') i++, f*=factor();
else i++,f/=factor();
return f;
}
int exp()
{
int f;
if(e[i]=='-') i++, f=-termen();
else f=termen();
while(i<n&&(e[i]=='-'||e[i]=='+'))
if(e[i]=='+') i++, f+=termen();
else i++,f-=termen();
return f;
}
void citire()
{
f.get(e,100001);
n=strlen(e);
}
int main()
{
citire();
i=0;
g<<exp()<<'\n';
return 0;
}