C++
#include <cstdio>
#include <stack>
using namespace std;
char arr[1000],arr2[1000];//arr2=postfix array
stack <char> stk;
stack <int> stk2;
int rtn_turn(char a){
switch(a){
case '*':
case '/':
return 1;
break;
case '+':
case '-':
return 2;
break;
case '(':
return 3;
break;
case ')':
return 4;
break;
case ' ':
return 5;
break;
}
return -1;
}
int calc(){
int i=0;
while(arr2[i]!='\0'){
int rtn=rtn_turn(arr2[i]);
if(rtn==-1){
int a=(int)arr2[i++]-48;
while(rtn==-1&&arr2[i]!=' '){
rtn=rtn_turn(arr2[i]);
if(rtn!=-1)
break;
a*=10;
a+=(int)arr2[i]-48;
i++;
}
while(arr2[i]==' '){
i++;
}
stk2.push(a);
continue;
}
else{
int a=stk2.top(),b;
stk2.pop();
b=stk2.top();
stk2.pop();
switch(arr2[i]){
case '+':
stk2.push(a+b);
break;
case '-':
stk2.push(b-a);
break;
case '*':
stk2.push(a*b);
break;
case '/':
int d=b/a;
stk2.push(d);
break;
}
i++;
while(arr2[i]==' '){
i++;
}
}
}
int c=stk2.top();
stk2.pop();
return c;
}
int main()
{
scanf("%s",arr);
int i=0,idx=0;
while(arr[i]!='\0'){
int rtn=rtn_turn(arr[i]);
if(rtn==-1){
arr2[idx++]=arr[i];
}else if(rtn==3){
stk.push(arr[i]);
}else if(rtn==4){
while(!stk.empty()){
if(stk.top()=='('){
stk.pop();
break;
}
arr2[idx++]=' ';
arr2[idx++]=stk.top();
stk.pop();
}
}else{
arr2[idx++]=' ';
if(!stk.empty()&&rtn_turn(stk.top())<=rtn){
while(!stk.empty()){
if(stk.top()=='('||rtn_turn(stk.top())>rtn){
break;
}
arr2[idx++]=' ';
arr2[idx++]=stk.top();
stk.pop();
}
}
stk.push(arr[i]);
}
i++;
}
while(!stk.empty()){
arr2[idx++]=stk.top();
stk.pop();
}
printf("%d",calc());
return 0;
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 안내사항 | 관리자 | 2019.12.02 | 175 |
201 | 4893 | 관리자 | 2019.12.20 | 145 |
200 | 4878 | 관리자 | 2019.12.20 | 145 |
199 | 4848 | 관리자 | 2019.12.20 | 148 |
198 | 4698 | 관리자 | 2019.12.20 | 144 |
197 | 4685 | 관리자 | 2019.12.20 | 202 |
196 | 4073 | 관리자 | 2020.04.06 | 156 |
195 | 4068 | 관리자 | 2020.04.06 | 213 |
194 | 4065 | 관리자 | 2019.12.20 | 151 |
» | 4064 | 관리자 | 2020.04.06 | 153 |
192 | 4059 | 관리자 | 2020.04.06 | 5937 |
191 | 4055 | 관리자 | 2020.04.06 | 152 |
190 | 4044 | 관리자 | 2020.04.06 | 157 |
189 | 4043 | 관리자 | 2020.04.06 | 151 |
188 | 4040 | 관리자 | 2020.04.06 | 150 |
187 | 4039 | 관리자 | 2019.12.20 | 153 |
186 | 4035 | 관리자 | 2020.04.06 | 155 |
185 | 4034 | 관리자 | 2020.04.06 | 147 |
184 | 4028 | 관리자 | 2020.04.06 | 165 |
183 | 4023 | 관리자 | 2019.12.20 | 174 |
182 | 3740 | 관리자 | 2019.12.20 | 212 |
181 | 3730 | 관리자 | 2019.12.20 | 176 |
180 | 3719 | 관리자 | 2019.12.20 | 154 |
179 | 3716 | 관리자 | 2019.12.20 | 143 |
178 | 3713 | 관리자 | 2019.12.20 | 164 |
177 | 3712 | 관리자 | 2019.12.20 | 161 |
176 | 3709 | 관리자 | 2019.12.20 | 147 |
175 | 3708 | 관리자 | 2019.12.20 | 114 |
174 | 3707 | 관리자 | 2019.12.20 | 109 |
173 | 3705 | 관리자 | 2019.12.20 | 112 |