Pagini recente » Cod sursa (job #1494246) | Cod sursa (job #2813205) | Cod sursa (job #2784277) | Cod sursa (job #1948361) | Cod sursa (job #594362)
Cod sursa(job #594362)
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;
int val(string s)
{
int n;
istringstream(s) >> n;
return n;
}
int eval(string s)
{
int p1,p2,p3,p4,pp=0;
p1=p2=p3=p4=-1;
for(int i=0; i<s.length();i++)
{
if (s[i]=='(') pp++;
else if (s[i]==')') pp--;
else if (pp==0)
{
if (s[i]=='+') p1=i;
else if (s[i]=='-') p2=i;
else if (s[i]=='*') p3=i;
else if (s[i]=='/') p4=i;
}
}
if (p1>p2) return eval(s.substr(0,p1)) + eval(s.substr(p1+1,s.length()-p1));
else if (p2>0) return eval(s.substr(0,p2)) - eval(s.substr(p2+1,s.length()-p2));
if (p3>p4) return eval(s.substr(0,p3)) * eval(s.substr(p3+1,s.length()-p3));
if (p4>0) return eval(s.substr(0,p4)) / eval(s.substr(p4+1,s.length()-p4));
if (pp==0 && s[0]=='(') return eval(s.substr(1,s.length()-2));
else return val(s);
}
int main()
{
ifstream input("evaluare.in");
ofstream output("evaluare.out");
string s;
input >> s;
int r = eval(s);
output << r;
//cout << r;
return 0;
}