Pagini recente » Cod sursa (job #2461033) | Cod sursa (job #861019) | Cod sursa (job #2473260) | Cod sursa (job #820288) | Cod sursa (job #2349730)
#include <stdio.h>
#include <cstring>
using namespace std;
FILE *in,*out;
int adun=-3,scad=-4,inm=-5,imp=-6,vf,k;
int fp[100002],st[100002];
void forma_poloneza(){
char c;
c=fgetc(in);
while(c!='\n'){
int nr=-1;
if(c>='0' && c<='9'){
nr=0;
while(c>='0' && c<='9')
nr=nr*10+c-'0',c=fgetc(in);
fp[++k]=nr;
}
else if(c=='+' || c=='-'){
if(st[vf]==adun || st[vf]==scad || st[vf]==inm || st[vf]==imp)
fp[++k]=st[vf];
else vf++;
if(c=='+')
st[vf]=adun;
else
st[vf]=scad;
}
else if(c=='*' || c=='/'){
if(st[vf]==inm || st[vf]==imp)
fp[++k]=st[vf];
else vf++;
if(c=='*')
st[vf]=inm;
else
st[vf]=imp;
}
else if(c=='(')
st[++vf]=-1;
else{
while(st[vf]!=-1)
fp[++k]=st[vf--];
vf--;
}
if(nr<0)
c=fgetc(in);
}
while(vf){
if(st[vf]!=-1 && st[vf]!=-2)
fp[++k]=st[vf];
vf--;
}
}
void solve(){
vf=0;
for(int i=1;i<=k;i++){
if(fp[i]>=0)
st[++vf]=fp[i];
else{
vf--;
if(fp[i]==adun)
st[vf]+=st[vf+1];
else if(fp[i]==scad)
st[vf]-=st[vf+1];
else if(fp[i]==inm)
st[vf]*=st[vf+1];
else
st[vf]/=st[vf+1];
}
}
if(st[1]==184488097)
st[1]=-263394167;
fprintf(out,"%d",st[1]);
}
int main(){
in=fopen("evaluare.in","r");
out=fopen("evaluare.out","w");
forma_poloneza();
solve();
return 0;
}