Pagini recente » creare | Cod sursa (job #1076118) | Cod sursa (job #418595) | Cod sursa (job #1582626) | Cod sursa (job #1221361)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int MAXC = 100010;
char a[MAXC], *p = a;
long Eval();
long Termen();
long Factor();
int main()
{
fin.getline( a, MAXC );
fout << Eval() << '\n';
fin.close();
fout.close();
return 0;
}
long Eval()
{
long r = Termen();
while ( *p == '+' || *p == '-' )
{
if ( *p == '+' )
{
p++;
r += Termen();
// break;
}
else
{
p++;
r -= Termen();
// break;
}
}
return r;
}
long Termen()
{
long r = Factor();
while ( *p == '*' || *p == '/' )
{
if ( *p == '*' )
{
p++;
r *= Factor();
// break;
}
else
{
p++;
r /= Factor();
// break;
}
}
return r;
}
long Factor()
{
long r = 0;
if ( *p == '(' )
{
p++;
r = Eval();
p++;
}
else
while ( *p >= '0' && *p <= '9' )
r = r * 10 + ( *p - '0' ), p++;
return r;
}