Pagini recente » Cod sursa (job #459865) | Cod sursa (job #1430421) | Cod sursa (job #1113955) | Cod sursa (job #1250512) | Cod sursa (job #869473)
Cod sursa(job #869473)
#include <fstream>
using namespace std;
ifstream f ( "evaluare.in" );
ofstream g ( "evaluare.out" );
int i;
#include <string>
string a;
int n;
int number();
int factor();
int termen();
int eval();
int main()
{
f >> a;
n = a.length();
g<<eval();
f.close();
g.close();
return 0;
}
int number()
{
int result=0;
while ( i < n && a[i] >= '0' && a[i] <= '9' )
result = result * 10 + a[i++] - '0';
return result;
}
int factor()
{
if ( a[i] >= '0' && a[i] <= '9' )
return number();
else
{
++i;
return eval();
}
}
int termen()
{
int result = factor();
while ( i < n && ( a[i] == '*' || a[i] == '/' ) )
if ( a[i++] == '*' )
result *= factor();
else
result /= factor();
return result;
}
int eval()
{
int result = termen();
while ( i < n && ( a[i] == '+' || a[i] == '-' ) )
if ( a[i++] == '+' )
result += termen();
else
result -= termen();
++i;
return result;
}