전위식을 후위식으로 변환 (스택(stack)이용)
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

전위식을 후위식으로 변환 (스택(stack)이용)에 대한 보고서 자료입니다.

목차

1. 문제개요

2. 알고리즘

3. 소스 및 주석

4. 실행화면

본문내용

넣는다.
}
else
{
s.push(*string);//그렇지 않으면 새로운걸 집어놓고
pf[++now] = c;//꺼낸걸 후위식배열에 넣는다.
pf[++now] = ' ';//빈칸을 넣는다.
}
}
}
}
string++;//입력문자 증가
}
pf[++now] = ' ';//빈칸을 넣는다.
while((c = s.pop()) != 0)//스택에서 꺼낸게 없을때까지.
{
pf[++now] = c;//후위식배열에 집어 넣는다.
pf[++now] = ' ';//빈칸도 넣는다.
}
}
int postfix::calcurate()//후위식을 계산하는 것.
{
int temp[post_size];
int j = -1;
int i = 0;
int a;
for(a = 0; a <= now; a++)//후위식 배열만큼만.
{
if(isdigit(pf[a]))//숫자이면.
{
i = (i * 10) + (pf[a] - 48);//아스키를 숫자로.
if(i==0)//i가 0일때 따로 해줌.
{
temp[++j] = i;
i = 0;
}
}
if((pf[a] == ' ') && (i != 0))//빈칸이면 임시배열에 넣음.
{
temp[++j] = i;
i = 0;
}
switch (is_oper(pf[a]))//연산자에 따라서 임시배열에서 계산함.
{
case 1:
i = temp[j];
i = temp[--j]+i;
temp[j] = i;
i = 0;
break;
case 2:
i = temp[j];
i = temp[--j]-i;
temp[j] = i;
i = 0;
break;
case 3:
i = temp[j];
i = temp[--j] * i;
temp[j] = i;
i = 0;
break;
case 4:
i = temp[j];
i = temp[--j] / i;
temp[j] = i;
i = 0;
break;
case 5:
i = temp[j];
i = temp[--j] % i;
a = temp[--j];
i = a % i;
temp[j] = i;
i = 0;
break;
}
}
return temp[j];//임시배열의 값을 리턴한다.
}
void postfix::printpost()//후위식을 출력한다.
{
int a;
for(a = 0; a <= now; a++)
cout << pf[a];
}
int main(int , char* [])
{
postfix post;//객체생성.
int b=0;//do문 변수
do{
char string[post_size];//string배열
cout << "중위식을 입력하세요 : ";
cin >> string;
post.inputpost(string);
cout << "후위식 : ";
post.printpost();
cout << endl;
cout << "계산 결과 : " << post.calcurate() << endl;
cout << "계속하실거면 1번을 나가실려면 아무번호나 누르세요"< cin >> b;
}
while(b==1);
return 0;
}
#4 실행화면
#5 느낀점
이번 후위식 레포트는 중간고사 시험일 후에 내는 레포트라서 시험공부로 전위식을 후위식으로 바꾸는 법을 공부하였으나 막상 실제로 코딩해볼려고 하니 뜻대로 되지 않아서 약간 힘들었습니다. 힘들었던 부분은 중위식을 스택을 이용하여 후위식으로 바꾸는 부분이였고 여러 가지 소스와 자료를 보고 할 수 있었습니다. 계산 부분도 약간은 어려웠지만 그런대로 잘 할 수 있었던 것 같습니다. 여러 가지 공개소스를 보니 코딩하는 방법이 참 많다는 걸 느꼈고 쉽게 코딩된 소스와 어렵게 코딩된 소스를 보니 코딩하는 사람의 실력도 많은 차이를 낸다는 것을 알았습니다.

키워드

  • 가격1,500
  • 페이지수8페이지
  • 등록일2005.11.03
  • 저작시기2005.11
  • 파일형식한글(hwp)
  • 자료번호#318220
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니