우선 첨부파일은 제가 88년에 터보파스칼로 된 자료를 얻어 사용하던 것입니다..
가끔 필요할 때 사용하면서도 그때의 코딩스타일 하나 안고치고 -.-
(역시 게으름으로 날 따를자가)
우선 참고하시고요..
다른 분이 이미 답변을 다셨듯이..
컴파일러에 관한 책을 한 번 보세요..
중위법 또는 후위법을 이용해서..
수식을 토큰별로 분리하고 연산 순서를 정하는 방법을 배우실 수 있습니다.
굳이 지금형태에서 문자열 자르기를 마치시려면..
규칙을 정하셔야할 듯..
Case 1 : 연산자 뒤에 +나 -가오면 부호 표시다.
Case 2 : 선두에 +나 -가 먼저오면 부호 표시다.
등으로 경우수를 골라내시고..
코딩하시기 바랍니다..
Voice of Delphi, 류..
* Function Compute(Var P:Integer; Strg:String; Var Error:Boolean):Real;
함수가 수식연산을 하는 함수입니다..
Strg에 수식을 넣으면 계산결과가 나옵니다..
사인 등 각종 함수가 모두 적용됩니다..
델초보 님이 쓰신 글 :
: 안녕하십니까 ?
: 텍스트의 내용을 입력받아 계산해주는 계산기를 만들려고 합니다..
: 부호가 있는 숫자의 연산을 하려니까 문제가 있네요...
:
: 예를 들어
: 1 + (10 *10)
: 이런식의 연산은 처리했습니다.
: 우선 토큰을 '1', '+', '10', '*', '10'으로 분리했습니다.
:
: 1 + (-10)
: 이것은 '1', '+', '(', '-', '10', ')'으로 분리했습니다.
: 그런데 '-', '10' 으로 분리되는것이 아니라
: '-10'으로 분리하고 싶습니다. 왜냐하면 '-'가 연산자가 아니라 부호이기 때문입니다.
:
: 고민을 해봐도 연산자와 부호가 구별되지 않습니다.
: 처리할 수 있는 방법이 있을것 같은데 잘 되지 않습니다.
: 고수분들의 한수 부탁드립니다.
:
:
:
:
:
|