Pagini recente » Cod sursa (job #2653218) | Cod sursa (job #710302) | Cod sursa (job #1675527) | Cod sursa (job #1678674) | Cod sursa (job #897458)
Cod sursa(job #897458)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
string s;
int N,i;
char oper[4][3]={"","+-","*/",""};
int fin(int a,char operat, int b)
{
if(operat=='+')
return a+b;
if(operat=='-')
return a-b;
if(operat=='*')
return a*b;
return a/b;
}
int calc(int level)
{
int value=0,aux;
char carac;
if(level==3)
{
if(s[i]=='(')
{
i++;
value=calc(1);
i++;
}
else
for(; strchr("0123456789",s[i]) && i<=N; value=value*10+s[i]-'0' , i++);
}
else
{
value=calc(level+1);
for( ; strchr(oper[level],s[i]) && i<=N; )
{
carac=s[i++];
aux = fin(value , carac , calc(level+1) ) , value=aux ;
}
}
return value;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
std::cin>>s;
N=s.length()-1;
std::cout<<calc(1)<<"\n";
return 0;
}