Pagini recente » Cod sursa (job #1885491) | Cod sursa (job #1138404) | Cod sursa (job #2390302) | Cod sursa (job #249488) | Cod sursa (job #1864482)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100011];
int i;
long long termen(void);
long long factor(void);
long long eval()
{
long long sum=termen();
while(s[i]=='+' or s[i]=='-')
{
if(s[i]=='+')
{i++; sum+=termen();}
else {i++; sum-=termen();}
}
return sum;
}
long long termen()
{
long long sum=factor();
while(s[i]=='*' or s[i]=='/')
{
if(s[i]=='*')
{i++; sum*=factor();}
else {i++; sum/=factor();}
}
return sum;
}
long long factor()
{
long long sum=0;
if(s[i]=='(')
{
i++;
sum=eval();
i++;
}
else
{while(isdigit(s[i]))
{
sum=sum*10+s[i]-'0';
i++;
}}
return sum;
}
int main()
{f.getline(s,100011);
long long sum=eval();
g<<sum;
return 0;
}