Pagini recente » Cod sursa (job #949937) | Cod sursa (job #1708355) | Cod sursa (job #3133059) | Cod sursa (job #796719) | Cod sursa (job #796725)
Cod sursa(job #796725)
#include <fstream>
using namespace std;
const int Nmax = 1000010;
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 *= Fact() ;
else
++p , Rez /= Fact();
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;
}