Pagini recente » Cod sursa (job #2710671) | Cod sursa (job #1397022) | Cod sursa (job #368400) | Cod sursa (job #19422) | Cod sursa (job #3151406)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int poz, l;
int factor(), termen(), evaluare();
char e[100001];
int evaluare()
{
int r=termen();
while(e[poz]=='-' || e[poz]=='+')
{
if(e[poz]=='-')
{
poz++;
r-=termen();
}
else if(e[poz]=='+')
{
poz++;
r+=termen();
}
}
return r;
}
int termen()
{
int r=factor();
while(e[poz]=='*' || e[poz]=='/')
{
if(e[poz]=='*')
{
poz++;
r=r*factor();
}
else if(e[poz]=='/')
{
poz++;
r=r/factor();
}
}
return r;
}
int factor()
{
int r=0;
if(e[poz]=='(')
{
poz++;
r=evaluare();
poz++;
}
else
{
while(e[poz]>='0' && e[poz]<='9')
{
r=r*10+e[poz]-'0';
poz++;
}
}
return r;
}
int main()
{
in>>e;
l=strlen(e);
e[l]='@';
out<<evaluare();
}