C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47036] Re:C에서 스택구현
라스코니 [chouoo] 1207 읽음    2006-11-09 22:01
스택 구현은 계산기 알고리즘에 잘 나와 있습니다. 하실려고 하는 것도 그런것 같구요.

이전에 했던 경험을 되살려보면,

간단한 개념은 순차 버퍼를 두고 operator 와 operand 를 각각 다른 버퍼에 집어 넣은 다음,, 순서대로 앞에서부터 끄집에 내어 계산을 시키는 겁니다.

일단 operator 버퍼와 operand  버퍼 두개를 두고, "3 + 5" 계산한다 치면,

operand 버퍼에는 3, 5가 들어가서 LIFO(Last In First Out) 방식으로 5,3 으로 들어가 있을 테고,
operator 버퍼에는 + 가 들어가 있겠죠.

* 괄호가 있으면 골치 아프지만요....  일단 거기까지는 고려하지 않기로 하고,,

먼저 *, / 부터 operator 를 찾습니다.  양 operand 사이에는 반드시 하나의 operator가 있어야 하니까요 양 operand 사이에 존재하는 operator를 찾아서 계산해 주고 계산된 operator 는 operator 버퍼에서 제거해 주고, operand 버퍼에 계산 값을 반영해서 변경해 줍니다. 이경우 두개의 operand 가 하나의 operand 로 줄겠죠.  *, / 가 다 없어졌으면 +, - 에 대해서 연산을 해 줍니다.

그런식으로 모든 operator 가 소진되도록 루프를 돌리면 계산기가 완성됩니다.





C초보 님이 쓰신 글 :
: C공부를 하고있는데 어려운 예제가 나와서 질문좀 드립니다.
: <사용자의 요청에따라 "3+5"를 전위 중위 후위 표현식으로 변경하여
: 스택에 입력하고 하나씩 꺼내어 출력하라> 라는 문제인데
: 3+5를 입력하여 전위는 +35 로 스택에 담고 중위는 3+5 로 후위는 35+ 로 담앗다가
: 사용자의 요청에따라 하나씩꺼내서 출력할떄 5 3 + 로 나온다는 것인데
: 소스를 짜려고하니 잘 안되네염; 아시는분 ~ 헬푸.. 설명도좀 해주세요;

+ -

관련 글 리스트
47021 C에서 스택구현 C초보 1144 2006/11/08
47036     Re:C에서 스택구현 라스코니 1207 2006/11/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.