연습장과 연필을 이용해서 다음 후위 표기법의 수식을 계산하여 그 값이 얼마인지 확인해 봅니다. 4 2 * 8 + 1 2 3 + * 4 / 단, 나눗셈은 정수형 나눗셈을 진행하기로 합니다. 즉, 나눗셈을 하면 소수점 이하는 내림으로 처리합니다. 제가 작성한 답안은 아래의 '더보기'를 클릭하여 확인할 수 있습니다. 혹시 이해되지 않는 부분이 있거나, 추가 설명이 필요하다면 언제든지 물어보길 바랍니다. 더보기 연산의 과정은 생략하고 결과만 보이도록 하겠습니다. 1 1
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 지금부터는 후위 표기법으로의 변환 알고리즘을 코드로 구현합니다. 먼저 실제 후위 표기법으로의 변환을 처리하는 함수를 다음의 형태로 정의하기로 합니다. void ConvToRPNExp(char exp[]) { .... } 위 함수의 의도는 다음과 같습니다. "중위 표기법의 수식을 담고 있는 배열의 주소 값을 인자로 전달하면서 ConvToRPNExp 함수를 호출하면, 인자로 전달된 주소 값의 배열에는 후위 표기법으로 바뀐 수식이 저장된다." (그런데 제가 잘 몰라서 그럴 수도 있지만 배열의 주소 값을 포인터로 받는 것도 아닌데 어떻게 ..
소괄호를 포함하는 중위 표기법의 수식을 후위 표기법의 수식으로 변환하는 과정을 정리하기 위해서 다음 수식 하나를 연습장과 연필을 이용해서 후위 표기법의 수식으로 바꿔봅니다. ( 1 * 2 + 3 ) / 4 제가 작성한 답안은 다음의 '더보기'를 클릭하여 확인할 수 있습니다. 혹시 이해가 가지 않거나 추가 설명이 필요하다면 언제든지 물어보길 바랍니다. 더보기 알고리즘은 앞서 설명했으므로 변환의 과정은 보이지 않고, 변환의 결과만 보이도록 하겠습니다. 저는 후위 표기법으로의 변환뿐만 아니라 전위 표기법으로의 변환도 수행하였습니다. 후위 표기법 : 1 2 * 3 + 4 / 전위 표기법 : / + * 1 2 3 4
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이제는 다음과 같이 소괄호가 포함되어 있는 중위 표기법의 수식을 후위 표기법의 수식으로 바꾸는 방법에 대해서 생각해 보겠습니다. 4 - ( 1 + 2 * 3 ) / 5 후위 표기법의 수식에서는 먼저 연산이 이뤄져야 하는 연산자가 뒤에 연산이 이뤄지는 연산자보다 앞에 위치해야 합니다. 따라서 위의 수식에서는 '+'연산자와 '*'연산자가 '/'연산자보다 먼저 스택을 빠져나와서 배치되어야 합니다. 이를 위해서 괄호를 어떻게 처리하는지 변환의 과정을 설명하겠습니다. 중위 표기법을 후위 표기법으로 변환하는 과정입니다. 기존 수식 ( 1 + ..
잠시 후에는 중위 표기법의 수식을 후위 표기법의 수식으로 바꾸는 프로그램을 작성할 것입니다. 그런데 그에 앞서 이번에 설명하는 방법으로 몇 개의 수식을 후위 표기법으로 바꾸는 연습을 하고자 합니다. 종이와 연필을 이용해서 후위 표기법으로 바꿔보면서 변환의 과정을 정확히 파악하기 바랍니다. 3 + 2 * 4 2 * 4 + 3 2 * 1 + 3 / 2 제 답안은 아래의 '더보기'를 클릭하여 확인할 수 있습니다. 혹시 이해가 가지 않거나 추가 설명이 필요하다면 언제든지 물어보길 바랍니다. 더보기 과정이 어떻게 되는지는 설명하지 않겠습니다. 변환의 결과만 보이겠습니다. 여기에 추가로 전위 표기법으로의 변환 결과도 보이도록 하겠습니다. 3 + 2 * 4 후위 표기법 : 3 2 4 * + 전위 표기법 : + 3 *..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이제는 지금까지 공부한, 그리고 구현한 스택을 활용할 차례입니다. 자료구조에서 스택의 활용과 관련해서 빠지지 않고 등장하는 사례가 계산기 프로그램입니다. 우리가 구현할 계산기 프로그램은 아래에서 보이는 수준의 수식을 계산할 수 있어야 합니다. ( 3 + 4 ) * ( 5 / 2 ) + ( 7 + ( 9 - 5 ) ) 프로그램 사용자가 위 수준의 문장을 입력하면 프로그램은 연산자의 우선순위와 괄호의 위치를 인식하여 연산의 결과를 프로그램 사용자에게 보여야 합니다. 즉, 우리가 구현할 계산기는 다음 두 가지를 고려해서 연산을 진행할 수..