Cod sursa(job #677345)
Utilizator | Data | 10 februarie 2012 00:50:12 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.45 kb |
using namespace std;
#include<fstream>
#include<stack>
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
stack <int> S;
int main ()
{
int i,a,b;
char x[100];
fin>>x;
for(i=0;x[i];i++)
{
if(isdigit(x[i]))
{
S.push(atoi(x+i));
while(x[i]!='.')
i++;
}
else
switch(x[i])
{
case '+':
{
a=S.top();S.pop();
b=S.top();S.pop();
S.push(a+b);
break;
}
case '-':
{
a=S.top();S.pop();
b=S.top();S.pop();
S.push(-a+b);
break;
}
case '*':
{
a=S.top();S.pop();
b=S.top();S.pop();
S.push(a*b);
break;
}
case '/':
{
a=S.top();S.pop();
b=S.top();S.pop();
S.push(b/a);
break;
}
case '%':
{
a=S.top();S.pop();
b=S.top();S.pop();
S.push(b%a);
break;
}
}
}
fout<<S.top();
}