Pagini recente » Cod sursa (job #2820520) | Cod sursa (job #1873567) | Cod sursa (job #1843456) | Cod sursa (job #2108694) | Cod sursa (job #2060306)
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
const int nm=100005;
char s[nm];
int stiva[nm],polo[nm],n,vf1,vf2;
int main()
{
cin.getline(s,nm);
n=strlen(s);
for(int i=0;i<n;i++)
{
if(isdigit(s[i]))
{
if(i==0)
{
polo[++vf2]=s[i]-'0';
continue;
}
if(isdigit(s[i-1]))
polo[vf2]=polo[vf2]*10+s[i]-'0';
else
polo[++vf2]=s[i]-'0';
}
else
{
if(s[i]=='(')
{
stiva[++vf1]='(';
continue;
}
if(s[i]==')')
{
while(stiva[vf1]!='(')
{
vf2--;
if(stiva[vf1]=='+')
polo[vf2]=polo[vf2]+polo[vf2+1];
if(stiva[vf1]=='-')
polo[vf2]=polo[vf2]-polo[vf2+1];
if(stiva[vf1]=='*')
polo[vf2]=polo[vf2]*polo[vf2+1];
if(stiva[vf1]=='/')
polo[vf2]=polo[vf2]/polo[vf2+1];
vf1--;
}
vf1--;
continue;
}
if(s[i]=='*' or s[i]=='/')
{
vf1++;
stiva[vf1]=s[i];
continue;
}
if(s[i]=='+' or s[i]=='-')
{
while(vf1 and (stiva[vf1]=='*' or stiva[vf1]=='/'))
{
vf2--;
if(stiva[vf1]=='/')
polo[vf2]=polo[vf2]/polo[vf2+1];
if(stiva[vf1]=='*')
polo[vf2]=polo[vf2]*polo[vf2+1];
vf1--;
}
stiva[++vf1]=s[i];
}
}
}
while(vf1)
{
vf2--;
if(stiva[vf1]=='+')
polo[vf2]=polo[vf2]+polo[vf2+1];
if(stiva[vf1]=='-')
polo[vf2]=polo[vf2]-polo[vf2+1];
if(stiva[vf1]=='*')
polo[vf2]=polo[vf2]*polo[vf2+1];
if(stiva[vf1]=='/')
polo[vf2]=polo[vf2]/polo[vf2+1];
vf1--;
}
cout<<polo[vf2];
return 0;
}