Pagini recente » Cod sursa (job #48480) | Cod sursa (job #3193817) | Cod sursa (job #1786186) | Cod sursa (job #2783741) | Cod sursa (job #1338114)
#include <fstream>
#include <cstring>
#define NR 100002
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char a[NR];
int poz,d;
int eval();
int numar()
{
int n=0;
while(poz<d)
{
if(a[poz]>='0' && a[poz]<='9')
n=n*10+a[poz]-'0';
else return n;
poz++;
}
return n;
}
int calcul()
{
int t=0;
if(a[poz]=='(')
{
poz++;
t=eval();
}
else
if(a[poz]>='0' && a[poz]<='9')
t=numar();
while(poz<d)
{
if(a[poz]=='*')
{
poz++;
t=t*numar();
}
else
if(a[poz]=='/')
{
poz++;
t=t/numar();
}
else
if(a[poz]=='(')
{
poz++;
t=calcul();
}
else
return t;
}
return t;
}
int eval()
{
int s=0;
if(a[poz]!='-')
s=calcul();
else
{
poz++;
s=calcul();
}
while(poz<d)
{
if(a[poz]=='+')
{
poz++;
s=s+calcul();
}
else
if(a[poz]=='-')
{
poz++;
s=s-calcul();
}
else
{poz++; return s;}
}
return s;
}
int main()
{
fin.getline(a,NR);
d=strlen(a);
fout<<eval()<<'\n';
return 0;
}