Pagini recente » Cod sursa (job #1246257) | Cod sursa (job #2160129) | Cod sursa (job #193170) | Cod sursa (job #1295105) | Cod sursa (job #177205)
Cod sursa(job #177205)
#include <fstream>
#include <string>
using namespace std;
string s;
int p = 0;
long long eval();
long long termen();
long long factor();
int main()
{
ifstream fin("evaluare.in");
fin >> s;
fin.close();
ofstream fout("evaluare.out");
fout << eval() << "\n";
fout.close();
return 0;
}
long long eval()
{
long long rez = termen();
while (s[p] == '+' || s[p] == '-')
{
if (s[p] == '+')
{
p++;
rez += termen();
}
else
{
p++;
rez -= termen();
}
}
return rez;
}
long long termen()
{
long long rez = factor();
while (s[p] == '*' || s[p] == '/')
{
if (s[p] == '*')
{
p++;
rez *= factor();
}
else
{
p++;
rez /= factor();
}
}
return rez;
}
long long factor()
{
long long rez = 0;
if (s[p] == '(')
{
p++;
rez = eval();
p++;
}
else
{
while (s[p] >= '0' && s[p] <= '9')
{
rez = rez * 10 + (s[p] - '0');
p++;
}
}
return rez;
}