Pagini recente » Cod sursa (job #213473) | Cod sursa (job #789131) | Cod sursa (job #1798188) | Cod sursa (job #2678350) | Cod sursa (job #2479194)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c,semn[100000],st[100000];
int i,n,k,nr,gasitnr,fp[100000];
long long stiva[100];
int main()
{
while(in>>c)
{
if(c>='0'&&c<='9')
{
gasitnr=1;
nr=nr*10+(c-48);
}
else if(gasitnr==1){
n++;
fp[n]=nr;
nr=0;
gasitnr=0;
}
if(c=='('||c=='+'||c=='-'||c=='/'||c=='*')
{
k++;
st[k]=c;
if(st[k]=='+'||st[k]=='-')
{
while(st[k]=='+'||st[k]=='-'||st[k]=='*'||st[k]=='/')
{
n++;
semn[n]=st[k-1];
st[k-1]=st[k];
k--;
}
}
else if(st[k]=='*'||st[k]=='/')
{
while(st[k]=='*'||st[k]=='/')
{
n++;
semn[n]=st[k-1];
st[k-1]=st[k];
k--;
}
}
}
else if(c==')')
{
while(st[k]!='(')
{
n++;
semn[n]=st[k];
k--;
}
k--;
}
}
if(gasitnr)
{
n++;
fp[n]=nr;
nr=0;
gasitnr=0;
}
while(k)
{
n++;
semn[n]=st[k];
k--;
}
k=0;
for(i=1;i<=n;i++)
{
if(semn[i]!='*'||semn[i]!='+'||semn[i]!='-'||semn[i]!='/')
{
k++;
stiva[k]=fp[i];
}
else
{
if(semn[i]=='+')stiva[k-1]=stiva[k-1]+stiva[k];
if(semn[i]=='-')stiva[k-1]=stiva[k-1]-stiva[k];
if(semn[i]=='*')stiva[k-1]=stiva[k-1]*stiva[k];
if(semn[i]=='/')stiva[k-1]=stiva[k-1]/stiva[k];
k--;
}
}
out<<stiva[1];
return 0;
}