#include<stdio.h>
int main(void)
{
char hahaha1[100] = { 0, };
char huwi[100] = { 0, };
char sik[100] = { 0, };
int huwi_num = 0;
int sik_num = 0;
int hahaha2=0;
int cal[100] = { 0, }, num=0;
printf("계산식을 입력하세요>> ");
scanf_s("%s", hahaha1,sizeof(hahaha1));
while(hahaha1[hahaha2]) {
switch (hahaha1[hahaha2]) {
case '(':
sik[sik_num] = '(';
sik_num++;
break;
case ')':{
while (1) {
if (sik[sik_num - 1] != '(') {
huwi[huwi_num] = sik[sik_num - 1];
sik_num--;
huwi_num++;
}
else if (sik[sik_num - 1] == '(')
{
sik_num--;
break;
}
}
}
break;
case '+':
if (sik[sik_num - 1] == '-') {
huwi[huwi_num] = '-';
sik[sik_num - 1] = '+';
huwi_num++;
}
else if (sik[sik_num - 1] == '+') {
huwi[huwi_num] = '+';
huwi_num++;
}
else if(sik[sik_num - 1] == '*' || sik[sik_num - 1] == '/') {
huwi[huwi_num] = sik[sik_num - 1];
huwi_num++;
sik[sik_num-1] = '+';
}
else {
sik[sik_num] = '+';
sik_num++;
}
break;
case '-':
if (sik[sik_num - 1] == '+') {
huwi[huwi_num] = '+';
sik[sik_num - 1] = '-';
huwi_num++;
}
else if (sik[sik_num - 1] == '-') {
huwi[huwi_num] = '-';
huwi_num++;
}
else if (sik[sik_num - 1] == '*' || sik[sik_num - 1] == '/') {
huwi[huwi_num] = sik[sik_num - 1];
huwi_num++;
sik[sik_num - 1] = '-';
}
else {
sik[sik_num] = '-';
sik_num++;
}
break;
case '*':
if (sik[sik_num - 1] == '*' || sik[sik_num - 1] == '/') {
huwi[huwi_num] = sik[sik_num-1];
sik_num--;
huwi_num++;
}
else {
sik[sik_num] = hahaha1[hahaha2];
sik_num++;
}
break;
case '/':
if (sik[sik_num - 1] == '*' || sik[sik_num - 1] == '/') {
huwi[huwi_num] = sik[sik_num - 1];
huwi_num++;
}
else {
sik[sik_num] = hahaha1[hahaha2];
sik_num++;
}
break;
default:
huwi[huwi_num] = hahaha1[hahaha2];
huwi_num++;
break;
}
hahaha2++;
}
sik_num--;
while(sik_num>=0) {
huwi[huwi_num] = sik[sik_num];
huwi_num++;
sik_num--;
}
huwi_num--;
printf("\n후위표기식 결과>> ");
for (int yeok=0; yeok<=huwi_num; yeok++) {
printf("%c", huwi[yeok]);
if (huwi[yeok] == '+') {
cal[num - 2] += cal[num-1];
num--;
}
else if (huwi[yeok] == '-') {
cal[num - 2] -= cal[num-1];
num--;
}
else if (huwi[yeok] == '*') {
cal[num - 2] *= cal[num-1];
num--;
}
else if (huwi[yeok] == '/') {
cal[num - 2] /= cal[num-1];
num--;
}
else {
cal[num] = huwi[yeok] - 48;
num++;
}
}
printf("\n\n계산결과 >> %d", cal[0]);
}