Pagini recente » Cod sursa (job #2582348) | Cod sursa (job #1565088) | Cod sursa (job #1137376) | Cod sursa (job #1575742) | Cod sursa (job #2272021)
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c[100005];
const int A=1000000005;
stack <int> q;
int main()
{int i,nr;
in.getline(c,100002);
char semn='+';
for (i=0;c[i];)
{
if (c[i]=='(')
{
q.push(A);
i++;
}
else if (c[i]=='-')
{
semn='-';
i++;
}
else if (c[i]=='+')
{
semn='+';
i++;
}
else if (c[i]=='*')
{
semn='*';
i++;
}
else if (c[i]=='/')
{
semn='/';
i++;
}
else if (c[i]>='0'&&c[i]<='9')
{
nr=0;
while (c[i]>='0'&&c[i]<='9')
{
nr=nr*10+c[i]-'0';
i++;
}
if (semn=='*')
{
nr*=q.top();
q.pop();
q.push(nr);
}
else if (semn=='/')
{
nr=q.top()/nr;
q.pop();
q.push(nr);
}
else if (semn=='+')q.push(nr);
else if (semn=='-')q.push(-1*nr);
semn='+';
}
else if (c[i]==')')
{
nr=0;
while (q.top()!=A)
{
nr+=q.top();
q.pop();
}
q.pop();
q.push(nr);
i++;
}
}
nr=0;
while (!q.empty())
{
nr+=q.top();
q.pop();
}
out<<nr<<"\n";
out.close();
in.close();
return 0;
}