Pagini recente » Cod sursa (job #2367643) | Cod sursa (job #2254471) | Cod sursa (job #2222325) | Cod sursa (job #1438737) | Cod sursa (job #2875589)
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char S[100000];
int i = 0;
long long paranteze();
long long adunari()
{ long long calcul = 0;
if(i<strlen(S) && S[i] == '(')
{
++i;
calcul = paranteze();
++i;
}
else
{ while(S[i] >= '0' && S[i] <= '9')
{calcul = calcul * 10 + (S[i] - '0');
++i;
}
}
return calcul;
}
long long inmultire()
{
long long calcul = adunari();
while(i< strlen(S) && (S[i] == '/' || S[i] == '*'))
{
if(S[i] == '/')
{
++i;
calcul /= adunari();
}
else{
++i;
calcul *= adunari();
}
}
//cout<<rezultat<<'\n';
return calcul;
}
long long paranteze()
{ long long calcul = inmultire();
while(i< strlen(S) && (S[i] == '-' || S[i] == '+'))
{
if(S[i] == '-')
{
++i;
calcul -= inmultire();
}
else{
++i;
calcul += inmultire();
}
}
//cout<<rezultat<<'\n';
return calcul;
}
int main()
{
fin>>S;
cout<<paranteze();
return 0;
}