Pagini recente » Cod sursa (job #1384208) | Cod sursa (job #1224672) | Cod sursa (job #1120565) | Cod sursa (job #2451048) | Cod sursa (job #2927951)
// https://www.infoarena.ro/problema/evaluare
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char e[100001];
int p = 0;
int expresie();
int termen();
int factor();
int numar();
int expresie()
{
int v = termen();
while(e[p] == '+' || e[p] == '-')
{
if(e[p] == '+')
{
p++;
v = v + termen();
}
else
{
p++;
v = v - termen();
}
}
return v;
}
int termen()
{
int v = factor();
while(e[p] == '*' || e[p] == '/')
{
if(e[p] == '*')
{
p++;
v = v * factor();
}
else
{
p++;
v = v / factor();
}
}
return v;
}
int factor()
{
int v;
if(e[p] == '(')
{
p++;
v = expresie();
p++;
}
else
{
v = numar();
}
return v;
}
int numar()
{
int v = 0;
while(e[p] >= '0' && e[p] <= '9')
{
v = v*10 + (int)(e[p] - '0');
p++;
}
return v;
}
int main()
{
fin >> e;
fout << expresie();
}