Pagini recente » Cod sursa (job #1879034) | Cod sursa (job #2874834) | oni-2012-ziua2-11-12 | Cod sursa (job #2636142) | Cod sursa (job #3278004)
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
string s;
int poz;
long long termen();
long long eval();
long long factor();
long long eval ()
{
long long rez=termen();
while (s[poz]=='+' || s[poz]=='-')
{
if (s[poz]=='+')
{
poz++;
rez+=termen();
}
if (s[poz]=='-')
{
poz++;
rez-=termen();
}
}
return rez;
}
long long termen()
{
long long rez=factor();
while (s[poz]=='*' || s[poz]=='/')
{
if (s[poz]=='*')
{
poz++;
rez*=factor();
}
else
{
poz++;
rez/=factor();
}
}
return rez;
}
long long factor ()
{
int rez=0;
if (s[poz]=='(')
{
poz++;
rez=eval();
poz++;
}
else
{
while (isdigit(s[poz]))
{
rez=10*rez+s[poz]-'0';
poz++;
}
}
return rez;
}
int main()
{
f >> s;
g << eval();
}