Pagini recente » Cod sursa (job #295568) | Cod sursa (job #2488691) | Cod sursa (job #471857) | Cod sursa (job #2039084) | Cod sursa (job #1839798)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int p=0;
double ev(); //evaluare
double fact(); //factor
double term(); //termen
double ev()
{
double r=fact();
while (p<s.size() && (s[p]=='-' || s[p]=='+'))
p++,(s[p-1]=='+')? r+=fact(): r-=fact();
return r;
}
double fact()
{
double r=term();
while (p<s.size() && (s[p]=='*' || s[p]=='/'))
p++,(s[p-1]=='*') ? r*=term() : r/=term();
return r;
}
double term()
{
double r=0;
if (s[p]=='(') p++,r=ev(),p++;
else
while (p<s.size() && s[p]<='9' && s[p]>='0')
r=r*10+s[p]-'0',p++;
return r;
}
main()
{
cin >> s;
cout << ev();
}