Pagini recente » Cod sursa (job #3132878) | Cod sursa (job #1716807) | Monitorul de evaluare | Cod sursa (job #796718) | Cod sursa (job #796723)
Cod sursa(job #796723)
#include <fstream>
using namespace std;
const int Nmax = 100010;
char Str[ Nmax ];
char *p = Str;
ifstream F("evaluare.in");
ofstream G("evaluare.out");
long Fact();
long Term();
long Eval();
long Fact()
{
long Rez = 0;
if ( *p == '(' )
{
++p;
Rez = Eval();
++p;
}
else
for ( ; *p >= '0' && *p <= '9' ; ++p )
Rez = Rez * 10 + *p - '0';
return Rez;
}
long Term()
{
long Rez = Fact();
while ( *p == '*' || *p == '/' )
if ( *p == '*' )
++p , Rez *= Term() ;
else
++p , Rez /= Term();
return Rez;
}
long Eval()
{
long Rez = Term();
while ( *p == '+' || *p == '-' )
if ( *p == '+' )
++p , Rez += Term() ;
else
++p , Rez -= Term();
return Rez;
}
int main( void )
{
F.getline( Str , Nmax , '\n' );
G<<Eval()<<'\n';
return 0;
}