Pagini recente » Cod sursa (job #2594166) | Cod sursa (job #2591223) | Cod sursa (job #1902194) | Cod sursa (job #499587) | Cod sursa (job #3302245)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int indice=0;
long long expr();
long long factor()
{
long long rez=0;
if (s[indice]=='(')
{
indice++;
rez=expr();
indice++;
return rez;
}
while (indice<s.size() && s[indice]>='0' && s[indice]<='9')
{
rez=rez*10+s[indice]-'0';
indice++;
}
return rez;
}
long long termen()
{
long long rez=factor();
while (indice<s.size() && (s[indice]=='*' || s[indice]=='/'))
{
if (s[indice]=='*')
{
indice++;
rez*=factor();
}
else
{
indice++;
rez/=factor();
}
}
return rez;
}
long long expr()
{
long long rez=termen();
while (indice<s.size() && (s[indice]=='+' || s[indice]=='-'))
{
if (s[indice]=='+')
{
indice++;
long long termen2=termen();
rez+=termen2;
}
else if (s[indice]=='-')
{
indice++;
long long termen2=termen();
rez-=termen2;
}
}
return rez;
}
int main()
{
cin>>s;
cout<<expr();
}