Pagini recente » Cod sursa (job #14711) | Rezultatele filtrării | Cod sursa (job #1646017) | Cod sursa (job #2377236) | Cod sursa (job #1971261)
#include <fstream>
#define nMax 100001
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int poz=1;
char sir[nMax];
int expresie();
int termen()
{
int ans=0;
if(sir[poz]=='(')
{
poz++;
ans=expresie();
poz++;
}
while(sir[poz]>='0' && sir[poz]<='9')
{
ans=ans*10+sir[poz]-'0';
poz++;
}
return ans;
}
int factor()
{
int ans=termen();
while(sir[poz]=='*' || sir[poz]=='/')
{
if(sir[poz]=='*')
{
poz++;
ans*=termen();
}
else
{
poz++;
ans/=termen();
}
}
return ans;
}
int expresie()
{
int ans=factor();
while(sir[poz]=='+' || sir[poz]=='-')
{
if(sir[poz]=='+')
{
poz++;
ans+=factor();
}
else
{
poz++;
ans-=factor();
}
}
return ans;
}
int main()
{
fin>>sir+1;
fout<<expresie();
}