Pagini recente » Monitorul de evaluare | Cod sursa (job #2023802) | Statistici hangan inesa (ine_hang) | Istoria paginii utilizator/rusurenata | Cod sursa (job #3216049)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char sir[1000001];
int expresie();
int termen();
int factor();
int constanta();
int i=0;
int main()
{
fin.getline(sir,1000001);
fout<<expresie();
}
int expresie()
{
int x=termen();
while(sir[i]=='+' || sir[i]=='-')
{
if(sir[i]=='+')
{
x=x+termen();
i++;
}
else
{
x=x-termen();
i++;
}
}
return x;
}
int termen()
{
int x=factor();
while(sir[i]=='*' || sir[i]=='/')
{
if(sir[i]=='*')
{
x=x*termen();
i++;
}
else
{
x=x/termen();
i++;
}
}
return x;
}
int factor()
{
int x;
if(sir[i]=='(')
{
i++;
x=expresie();
}
else
x=constanta();
return x;
}
int constanta()
{
int x;
while(sir[i]>='0' && sir[i]<='9')
{
x=x*10+sir[i]-'0';
i++;
}
return x;
}