Pagini recente » Cod sursa (job #956529) | Cod sursa (job #2760173) | Cod sursa (job #208500) | Cod sursa (job #3242463) | Cod sursa (job #629254)
Cod sursa(job #629254)
#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;
}