Pagini recente » Cod sursa (job #959451) | Cod sursa (job #377182) | Cod sursa (job #1652361) | Cod sursa (job #2653559) | Cod sursa (job #2876100)
#include <iostream>
#include <string>
#include <stack>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int evalPostfixata(string exp)
{
stack<int> stack;
for (char c: exp)
{
// daca este cifra
if (c >= '0' && c <= '9') {
stack.push(c - '0');
}
// altfel daca este operand,
//dar mai intai imi separ termenii eventual implcati in operatie
else {
int elem1 = stack.top();
stack.pop();
int elem2 = stack.top();
stack.pop();
if (c == '+') {
stack.push(elem1 + elem2);
}
else if (c == '-') {
stack.push(elem2 - elem1);
}
else if (c == '*') {
stack.push(elem1 * elem2);
}
else if (c == '/') {
stack.push(elem2 / elem1);
}
}
}
return stack.top();
}
int main()
{
string exp;
fin>>exp;
fout<<evalPostfixata(exp);
return 0;
}