Pagini recente » Cod sursa (job #319225) | Rating unibuc (UNIBUC-Belu-Palcuie-Cucu) | Cod sursa (job #3213504) | Cod sursa (job #955189) | Cod sursa (job #1109832)
#include <fstream>
#include<iostream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[1000];
int REZ[1000],krez;
int k,x;
char c;
int priority(char c)
{
if (c=='(')
return -1;
if (c=='+' || c=='-')
return 0;
return 1;
}
int calcul(int a, int b, int op)
{
if (op=='+')
return a+b;
if (op=='-')
return a-b;
if (op=='*')
return a*b;
if (op=='/')
{
if(b!=0)
return a/b;
}
}
int main()
{
k=0;
krez=0;
while ((c=cin.get())!='.')
{
if (c=='(')
{
S[++k]=c;
continue;
}
if (c==')')
{
while (S[k]!='(')
{
krez--;
REZ[krez]=calcul(REZ[krez],REZ[krez+1],S[k]);
k--;
}
k--;
continue;
}
if (c>='0' && c<='9')
{
cin.putback(c);
cin>>x;
REZ[++krez]=x;
continue;
}
if (c=='+' || c=='-' || c=='*' || c=='/')
{
while (priority(S[k])>=priority(c))
{
krez--;
REZ[krez]=calcul(REZ[krez],REZ[krez+1],S[k]);
k--;
}
S[++k]=c;
continue;
}
}
g<<REZ[1];
return 0;
}