Pagini recente » Borderou de evaluare (job #366932) | Cod sursa (job #137062) | Cod sursa (job #2438930) | Cod sursa (job #1139809) | Cod sursa (job #3196121)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int n,rez,i=1;
char x[100001];
int operatie();
int factor();
int calc();
int operatie()
{
int y=factor();
while(x[i]=='+' || x[i]=='-')
{
fout<<i<<" "<<y<<"\n";
if(x[i]=='+')
{
i++;
int z=factor();
y=y+z;
}
else if(x[i]=='-')
{
i++;
int z=factor();
y=y-z;
}
}
return y;
}
int factor()
{
int y=calc();
while(x[i]=='*' || x[i]=='/')
{
if(x[i]=='*')
{
i++;
int z=calc();
y=y*z;
}
else if(x[i]=='/')
{
i++;
int z=calc();
y=y/z;
}
}
return y;
}
int calc()
{
int y=0;
if(x[i]=='(')
{
i++;
y=operatie();
i++;
}
else
{
while(x[i]>='0' && x[i]<='9')
{
y=y*10+(x[i]-'0');
i++;
}
}
return y;
}
int main()
{
fin>>(x+1);
n=strlen(x+1);
fout<<operatie();
return 0;
}