Pagini recente » Cod sursa (job #2481487) | Cod sursa (job #2379847) | Profil Despina | Cod sursa (job #155306) | Cod sursa (job #2049949)
#include<fstream>
#include<string>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int i, n, trans[256], k, nr, b[100], sol;
char a[100], stiva[100];
int main()
{
f>>a;
trans[43]=-1;
trans[45]=-2;
trans[42]=-3;
trans[47]=-4;
for(i=0;a[i]!=0;i++)
n++;
k=0;
stiva[k]='(';
a[++n]=')';
for(i=0;i<=n;i++)
{
if(a[i]=='(')
stiva[++k]=a[i];
if(a[i]==')')
{
while(stiva[k]!='(')
b[++nr]=trans[stiva[k--]];
k--;
}
if(a[i]=='+' || a[i]=='-')
{
while(stiva[k]=='-' || stiva[k]=='*' || stiva[k]=='/' || stiva[k]=='+')
b[++nr]=trans[stiva[k--]];
stiva[++k]=a[i];
}
if(a[i]=='*' || a[i]=='/')
{
while(stiva[k]=='*' || stiva[k]=='/')
b[++nr]=trans[stiva[k--]];
stiva[++k]=a[i];
}
if(a[i]>='0' && a[i]<='9')
{
int numar=0;
while(a[i]>='0' && a[i]<='9')
{
//a[i]='?';
numar=numar*10+a[i]-'0';
i++;
}
i--;
b[++nr]=numar;
}
}
//g<<int(a[2])<<"\n";
/*for(i=1;i<=nr;i++)
g<<b[i]<<" ";
while(k>0)
b[++nr]=trans[stiva[k--]];*/
for(i=1;i<=nr;i++)
g<<b[i]<<" ";
k=0;
for(i=1;i<=nr;i++)
{
if(b[i]>=0)
trans[++k]=b[i];
else
{
if(b[i]==-1)
{
sol=trans[k-1]+trans[k];
trans[k-1]=sol;
}
if(b[i]==-2)
{
sol=trans[k-1]-trans[k];
trans[k-1]=sol;
}
if(b[i]==-3)
{
sol=trans[k-1]*trans[k];
trans[k-1]=sol;
}
if(b[i]==-4)
{
sol=trans[k-1]/trans[k];
trans[k-1]=sol;
}
k--;
}
}
g<<sol;
return 0;
}