Pagini recente » Cod sursa (job #2367544) | Istoria paginii runda/pregatire_bb_/clasament | Cod sursa (job #1681744) | Istoria paginii runda/000000/clasament | Cod sursa (job #726058)
Cod sursa(job #726058)
#include<fstream>
#define dim 100001
using namespace std;
char sir[dim];int i=0;
int termen();
int factor();
void citire()
{
ifstream f("evaluare.in");
f.getline(sir, dim);
f.close();
}
int evaluare()
{
int x = termen();
while( (sir[i] == '+') or(sir[i] == '-'))
switch( sir[i] )
{
case '+' :
++i; x += termen();
break;
case '-' :
++i; x -= termen();
break;
}
return x;
}
int termen()
{
int x = factor();
while( (sir[i] == '*') or (sir[i] == '/') )
switch( sir[i] )
{
case '*' :
++i;
x *= factor();
break;
case '/' :
++i;
x /= factor();
break;
}
return x;
}
int factor()
{
int x = 0;
if( sir[i] == '(' )
{
++i;
x = evaluare ();
++i;
}
else
{
while ( sir[i] >= '0' && sir[i] <= '9' )
{
x = x * 10 + sir[i] - '0';
++i;
}
}
return x;
}
int main()
{
citire();
ofstream g("evaluare.out");
g<<evaluare();
g.close();
return 0;
}