Pagini recente » Cod sursa (job #407879) | Cod sursa (job #878082) | Cod sursa (job #2030992) | Cod sursa (job #174880) | Cod sursa (job #2048554)
# include <fstream>
# include <cstring>
# define DIM 100010
# define INF 1000000000
# define a first
# define b second
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char t[DIM],s[DIM];
pair<int,char> v[DIM];
int n,i,nr,k,u;
int main () {
fin>>t+2;
t[1]='(';
n=strlen(t+1);
n++;
t[n]=')';
for(i=1;i<=n;i++){
if((!(t[i]>='0'&&t[i]<='9'))&&nr){
v[++k].a=nr;
nr=0;
}
if(t[i]==')'){
while(s[u]!='('){
v[++k].a=-INF;
v[k].b=s[u];
u--;
}
u--;
continue;
}
if(t[i]=='('){
s[++u]=t[i];
continue;
}
if(t[i]=='+'||t[i]=='-'){
while(s[u]!='('&&s[u]!=')'){
v[++k].a=-INF;
v[k].b=s[u];
u--;
}
s[++u]=t[i];
continue;
}
if(t[i]=='*'||t[i]=='/'){
while(s[u]=='*'||s[u]=='/'){
v[++k].a=-INF;
v[k].b=s[u];
u--;
}
s[++u]=t[i];
continue;
}
nr=nr*10+t[i]-'0';
}
for(i=1;i<=k;i++)
if(v[i].a!=-INF)
fout<<v[i].a<<" ";
else
fout<<v[i].b<<" ";
return 0;
}