C++ 사칙연산 계산기

소스상 도움을 받을려고 올리는 글은 아닙니다.

과제로 사칙연산 계산기 '+', '-', '*', '/' 지원, '()' 연산 지원하는 계산기를 만들어야되는데. 이전 수업에 배운 내용 기반으로 만들어야한다는 점입니다.

여기서 사칙연산 계산기는 대부분 중위표기법으로 표시된 수식을 스택등을 이용해서 후위표기법으로 바꾼 후, 계산을 하는 방식을 취하고 있는데, 여기서 문제는 "스택"입니다. 수업에서 스택에 대해서 배운적이 없고, 구현을 해본 적도 없습니다.

제가 구현을 못한다는게 아닙니다. 그냥 가져다 쓰면 되구요. 근데 스택을 구현을 할 수 있는 기반 문법등의 내용을 배웠으니, 스택을 마음대로 구현해서 계산기를 구현해도 되는걸까요 ? 의도가 무엇인지.. 흠..

스택등을 안쓴다고해도, 결과적으로 본질적으로는 스택으로 하는 원리 그대로 계산하는 것인데, 스택등을 아예 안 쓰고 그냥 순수 분해해서, 중위표기법 그대로로 해석해서 계산기를 구현 해보신 분이 계씰까요 ?

2답변

  • C++의 STL중 stack이라는 것이 있습니다.(구현할 필요가 없음. include만 해주면 됨.)

    *참조 : http://hyeonstorage.tistory.com/321

    후위표기법을 이용하면 소괄호, 연산 우선순위를 신경 쓸 필요가 없는데, 중위표기법은 괄호나 우선순위를 일일이 따져줘야 하기 때문에 모든 경우의 수를 다 처리해줘야 합니다..

    • 네, 본문에 적어놨듯이 그냥 가져다 쓰면 되는 걸 저도 압니다. 그리고 후위표기법으로 처리하는 것도 본문에 적힌대로 알구요. 그런데 과제를 배운 시점에서 자료구조 등을 배운적이 없고, 예제로는 단순 파싱으로 처리를 하는 방법을 교수님께서 원하시는 것 같습니다. 예시로 보여준 샘플도 단순 string parsing으로 처리하는 것이였구요. 그래서 조언을 구한겁니다. 중위표기식으로만으로도 처리하는게 복잡하지 않은지 등을 전체적인 조언이 필요합니다. 원종운 2018.10.14 21:03
  • 가장 정확하게 문제의 의도를 파악하는 방법은 교수님께 직접 여쭤보시는것이라 생갑합니다. 문제의 의도나 후위표기법으로의 변환이 가능한지 정도는 거리낌없이 알려주시리라 생각합니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.