Q&A

  • 문자('+','-')를 관계연산자로변환하는.....
안녕하세요?



프로그램을 개발하는 도중 궁금한게 있어서 이렇게 질문을

올립니다.



예)

procedure TForm1.abc;

var

str:string;

val:integer;

begin

str:='2 + 3 *1';

문자열 변수 str에 저장되어있는 문자열을 아래와 같이 사용하려고 하는데

어떻게 변환하는지 알고 계신분은 제발 알려 주셨으면 감사 * 100 하겠습니다.

이렇게 val:= 2 + 3 * 1



end;



2  COMMENTS
  • Profile
    어린왕자 2000.04.19 01:01
    안녕하세요..영원한 델초보 어린왕자인데요..

    그냥..저가 아는 수준으루 말해두 되나요?

    직접적으로 '+','-'이런 산술연산자로는 안될꺼예요..

    연산자는 함수이고

    데이타는 스트링이니깐요..

    그러니깐..힘들꺼예요..다만 막노동으로 연결해주는 수밖에..즉.

    '+'가 입력되었을때 플러스를 해주는 함수와 연결하고

    '-'가 왔을때 마이너스 해주는 함수와 연결해주고..

    수식을 해석해야하는 쫌 막노동이 들거 같군요..

    무슨말인지 아시죠?



    이항연산문장(str) 즉 연산자가 하나인거를 예를 들어보면..

    Plus:=pos('+',str);

    if pos<> then begin

    Return:=Add(plus,str);

    showmessage('주어진 식 '+str+'의 값은 '+IntToStr(Return)+'입니다');

    end

    else showmessage('이프로그램으로 계산할수 없습니다');





    procedure Add(Plus:integer;str:string):integer;

    begin





    // 이부분을 문자하나하나분석해서 수식화하면 는데 여간 막노동일이 아니어서..T.T

    end;



    그럼 즐코딩하세요..질문이 시원치않아서 죄송합니다..















    나원용 wrote:

    > 안녕하세요?

    >

    > 프로그램을 개발하는 도중 궁금한게 있어서 이렇게 질문을

    > 올립니다.

    >

    > 예)

    > procedure TForm1.abc;

    > var

    > str:string;

    > val:integer;

    > begin

    > str:='2 + 3 *1';

    > 문자열 변수 str에 저장되어있는 문자열을 아래와 같이 사용하려고 하는데

    > 어떻게 변환하는지 알고 계신분은 제발 알려 주셨으면 감사 * 100 하겠습니다.

    > 이렇게 val:= 2 + 3 * 1

    >

    > end;

    >

  • Profile
    이경문 2000.04.19 17:33
    Expression Parser에 대한 개념을 가지고 있어야 합니다.

    먼저 주어진 스트링을 Token이라는 Compiler에서 사용되어 지고 있는 작은 것으로 분할하고 infix를 postfix로 바꾼 다음 evaluating하는 단계를 거쳐야 합니다.

    좀 어려운 말 같은디 젤 좋은 방법은 남들 만들어 놓은 거 그냥 쓰는 거지요.



    다음 사이트에 있습니다.



    http://www.torry.ru/calculators.htm