Pagini recente » Cod sursa (job #112347) | Cod sursa (job #1926861) | Cod sursa (job #2348484) | Cod sursa (job #1110970) | Cod sursa (job #686909)
Cod sursa(job #686909)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char *s = new char[100001];
long termen();
long factor();
long eval()
{
long t=termen();
while(*s=='+' || *s=='-')
{
switch(*s)
{
case '+': ++s; t+=termen();break;
case '-': ++s; t-=termen();break;
}
}
return t;
}
long termen()
{
long t=factor();
while(*s=='*' || *s=='/')
{
switch(*s)
{
case '*': ++s; t*=factor();break;
case '/': ++s; t/=factor();break;
}
}
return t;
}
long factor()
{
long r=0;
if(*s=='(')
{
++s;
r=eval();
++s;
}
else
{
while(*s>='0' && *s<='9')
{
r=r*10 + *s - '0';
++s;
}
}
return r;
}
int main()
{
f>>s;
g<<eval();
f.close();
g.close();
return 0;
}