Pagini recente » Cod sursa (job #2564918) | Cod sursa (job #1532370) | Cod sursa (job #1120379) | Cod sursa (job #2133144) | Cod sursa (job #2875436)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
stack <char> semne;
stack <int> operanzi;
void calcul()
{
int x,y;
if(semne.top()=='+')
{
x=operanzi.top();
operanzi.pop();
y=operanzi.top();
operanzi.pop();
operanzi.push(x+y);
}
if(semne.top()=='-')
{
x=operanzi.top();
operanzi.pop();
y=operanzi.top();
operanzi.pop();
operanzi.push(y-x);
}
if(semne.top()=='/')
{
x=operanzi.top();
operanzi.pop();
y=operanzi.top();
operanzi.pop();
operanzi.push(y/x);
}
if(semne.top()=='*')
{
x=operanzi.top();
operanzi.pop();
y=operanzi.top();
operanzi.pop();
operanzi.push(x*y);
}
semne.pop();
}
int main()
{
string s;
getline(fin, s);
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
semne.push('(');
if(s[i]==')')
{
while (semne.top()!='(')
calcul();
semne.pop();
}
if(s[i]=='+')
{
while(!semne.empty() && (semne.top()=='*' || semne.top()=='/' || semne.top()=='-' || semne.top()=='+'))
calcul();
semne.push('+');
}
if(s[i]=='-')
{
while(!semne.empty() && (semne.top()=='*' || semne.top()=='/' || semne.top()=='-' || semne.top()=='+'))
calcul();
semne.push('-');
}
if(s[i]=='/' || s[i]=='*')
semne.push(s[i]);
if(s[i]>='0' && s[i]<='9')
{
int nr=s[i]-'0';
i++;
while(s[i]>='0' && s[i]<='9')
{
nr*=10;
nr+=s[i]-'0';
i++;
}
i--;
operanzi.push(nr);
}
}
while(!semne.empty())
calcul();
fout<<operanzi.top();
return 0;
}