Pagini recente » Cod sursa (job #2257773) | Cod sursa (job #2098562) | Cod sursa (job #2935527) | Cod sursa (job #2740536) | Cod sursa (job #2338117)
#include <fstream>
#define LMAX 100005
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char *p;
char s[LMAX];
int parseFactor();
int parseProdDiv();
int parseSumSub();
int main()
{
fin.getline(s, LMAX);
p = s;
fout<<parseSumSub()<<'\n';
fin.close();
fout.close();
return 0;
}
int parseFactor()
{
if (*p == '(')
{
++p;
int ans = parseSumSub();
++p;
return ans;
}
int ans = 0;
while (*p>='0' && *p<='9')
{
ans = ans * 10 + (*p - '0');
++p;
}
return ans;
}
int parseProdDiv()
{
int m1 = parseFactor();
while (*p == '*' || *p == '/')
{
int type = (*p == '*' ? 1 : 2);
++p;
int m2 = parseFactor();
if (type == 1)
{
m1 = m1 * m2;
}
else
{
m1 = m1 / m2;
}
}
return m1;
}
int parseSumSub()
{
int m1 = parseProdDiv();
while (*p == '+' || *p == '-')
{
int type = (*p == '+' ? 1 : 2);
++p;
int m2 = parseProdDiv();
if (type == 1)
{
m1 = m1 + m2;
}
else
{
m1 = m1 - m2;
}
}
return m1;
}