Pagini recente » Cod sursa (job #1452432) | Cod sursa (job #1135934) | Cod sursa (job #585558) | Cod sursa (job #976820) | Cod sursa (job #847364)
Cod sursa(job #847364)
#include <fstream>
using namespace std;
ifstream f ( "evaluare.in" );
ofstream g ( "evaluare.out" );
int Number();
int eval();
int factor();
int termen();
#include <string>
string s;
int i, l;
int main()
{
f >> s;
l = s.length();
g << eval();
f.close();
g.close();
return 0;
}
int Number()
{
int result = 0;
while ( i < l && s[i] >= '0' && s[i] <= '9' )
result = result * 10 + ( s[i++] - '0' );
return result;
}
int factor()
{
int result = 0;
if ( s[i] == '(' )
{
++i;
result = eval();
++i;
}
else result = Number ( );
return result;
}
int termen()
{
int result = factor();
while ( i < l && ( s[i] == '*' || s[i] == '/' ) )
{
++i;
if ( s[i-1] == '*' )
result *= factor();
else result /= factor();
}
return result;
}
int eval()
{
int result = termen();
while ( i < l && ( s[i] == '+' || s[i] == '-' ) )
{
++i;
if ( s[i-1] == '+' )
result += termen();
else
result -= termen();
}
return result;
}