Pagini recente » Cod sursa (job #723423) | Cod sursa (job #901407) | Cod sursa (job #1356662) | Cod sursa (job #3275903) | Cod sursa (job #1026626)
#include <fstream>
using namespace std;
const int Max = 100005;
char s[Max], *p=s;
long termen();
long factor();
long eval()
{
long r = termen();
while( *p == '+' || *p == '-')
{
switch(*p)
{
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
}
return r;
}
long factor()
{
long r=0;
if(*p=='(')
{
++p;
r = eval();
++p;
}
else
{
while(*p>='0'&&*p<='9')
{
r = r*10 + *p - '0';
p++;
}
}
return r;
}
long termen()
{
long r = factor();
while( *p == '*' || *p == '/')
{
switch(*p)
{
case '*':
++p;
r *= factor();
break;
case '/':
++p;
r /= factor();
break;
}
}
return r;
}void citire()
{
ifstream f("evaluare.in");
f>>s;
f.close();
}
void afisare()
{
ofstream h("evaluare.out");
h<<eval();
h.close();
}
int main()
{
citire();
afisare();
return 0;
}