Pagini recente » Cod sursa (job #1900437) | Cod sursa (job #2174384) | Cod sursa (job #1859343) | Cod sursa (job #340615) | Cod sursa (job #1961486)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int i = 1;
char sir[100002];
int evalueaza();
int termen();
int factor();
int main()
{
f>>sir+1;
g<<evalueaza();
return 0;
}
int evalueaza()
{
int r = termen();
while( sir[i] == '+' || sir[i] == '-' )
{
if( sir[i] == '+' )
{
++i;
r+=termen();
}
else
{
++i;
r-=termen();
}
}
return r;
}
int termen()
{
int r = factor();
while( sir[i] == '*' || sir[i] == '/' )
{
if( sir[i] == '*' )
{
++i;
r *= factor();
}
if( sir[i] == '/' )
{
++ i;
r /= factor();
}
}
return r;
}
int factor()
{
int r = 0;
if( sir[i] == '(' )
{
++i;
r = evalueaza();
++i;
}
else
{
while( sir[i] >= '0' && sir[i] <= '9' )
{
r = r * 10 + sir[i] - '0';
++i;
}
}
return r;
}