Pagini recente » Cod sursa (job #233922) | Cod sursa (job #2152288) | Cod sursa (job #1965483) | Cod sursa (job #386013) | Cod sursa (job #763021)
Cod sursa(job #763021)
#include <iostream>
#include <cstdio>
#include <string>
#include <fstream>
using namespace std;
std::string c;
int it = 0;
long termen();
long factor();
long exeval()
{
long r = termen();
while(c[it] == '+' || c[it] == '-')
{
++it;
if(c[it-1] == '+')
{
r+=termen();
}
else if(c[it-1] == '-')
{
r-=termen();
}
}
return r;
}
long termen()
{
long r = factor();
while(c[it] == '*' || c[it] == '/')
{
if(c[it] == '*')
{
++it;
r*=factor();
}
else if(c[it] == '/')
{
++it;
r/=factor();
}
}
return r;
}
long factor()
{
long r = 0;
if(c[it] == '(')
{
++it;
r = exeval();
++it;
}
else
{
while(c[it] >= '0' && c[it] <= '9')
{
r = r*10 + c[it] - '0';
++it;
}
}
return r;
}
int main()
{
std::ifstream in("evaluare.in");
in >> c;
std::ofstream out("evaluare.out");
out << exeval();
return 0;
}