2015-02-01 1 views
-1

다음은 최대 This 질문입니다. 이 시점에서 나는 변수 값 대신처럼 보이는의 .SO의 사용자에게 다음 자체 변수를 식별 할 수있는 프로그램을 원하는 :shunting 야드 알고리즘에서 변수 식별 구현

Enter an Expression: 

ADD(DIV(SIN(FACT(X1)),CEIL(TAN(MUL(1.5,FIB(X2))))),GCD(Y,10))  

Enter Variables: X1,X2,Y  
Enter values for X1, X2 and Y by this order(separate the values by space): 3 4 2  
The Result is: 1.94  

프로그램이 작동합니다을 같은 : 그래서

Enter an Expression: 

ADD(DIV(SIN(FACT(X1)),CEIL(TAN(MUL(1.5,FIB(X2))))),GCD(Y,10))  

your variables are : X1,X2,Y  

now Enter values for X1, X2 and Y by this order(separate the values by space): 3 4 2  
The Result is: 1.94  

사용자는 더 이상 변수가 무엇인지를 기계에 알릴 필요가 없습니다. 어떻게 이것을 얻을 수 있습니까?

내가 This 질문을 확인했지만 그것이 내가 필요한 매우 다르다 그리고 또한 파이썬

UPDATE에있어이 : 특별히 나는 변수를 찾을 수 있도록 차량 기지 알고리즘 반복합니다. 파서 코드에 대한 링크를 아래에 두었습니다. http://paste.ubuntu.com/9999494/

+0

파서를 작성해야합니다. – dasblinkenlight

+0

방정식의 구문 분석 트리를 만들 때 식별자가되는 각 토큰 (예 : 함수 이름 또는 π과 같은 알려진 상수)인지 여부를 확인합니다. 그렇지 않은 경우 변수로 표시하십시오. – RealSkeptic

답변

0

모든 함수의 이름을 저장하고 함수 나 숫자가 아닌 모든 인수를 찾아야합니다.

입력 ADD(X, DIV(3, Y))을 검색하면 ADDDIV이 기능이며 3은 숫자임을 감지해야합니다. X와 Y는 변수가되어야합니다. 기본적으로 대괄호를 감지 할 때마다 일치하는 닫는 대괄호를 찾은 다음 해당 대괄호의 내용을 쉼표로 분리하고 각 부분을 평가해야합니다. 부품이 숫자가 아니거나 함수가 아닌 경우 변수 여야합니다.

0

나는 다음과 같은 알고리즘을 제안 : ','

  1. 분할에 의해 분리 된 토큰에 텍스트 '(', ')'또는
  2. 토큰을 통해
  3. 검색 공지 기능 번호
  4. 를 필터링

    : 나머지
  5. 모든
  6. 여기

자바 8 스트림을 사용 가능한 구현되는 변수이고

+0

대답을 주셔서 감사합니다 에 의해 어떻게 내가 구문 분석을 위해 사용하고있는 EvalEx에서 shunting 야드 알고리즘을 구현할 수 있습니까? 코드는 입니다. http://paste.ubuntu.com/9999494/ – Vicarious