우리 C++ 프로그램에서 사용자 정의 수식을 갖고 싶습니다. 예 : 값 v = x + (y - (z-2))/2. 나중에 프로그램에서 사용자는 x, y 및 z를 정의합니다. -> 프로그램은 계산 결과를 반환해야합니다.
나중에 수식이 변경 될 수 있으므로 다음 번에 수식을 구문 분석하고 새 값을 추가 할 때 수식이 변경 될 수 있습니다.
어떤 아이디어/힌트 어떻게 이런 식으로합니까?
지금까지 방정식을 계산할 수있는 파서를 작성해 보았습니다. 어쩌면 그것에 대한 아이디어가 있습니까?사용자 정의 수식 계산 (C++ 사용)
답변
자주 사용되며 향후 확장 될 예정인 경우 파이썬 또는 LUA를 코드에 추가하는 것이 좋습니다. LUA은 매우 가볍고 스크립팅 언어로서 새로운 기능, 연산자 등을 제공 할 수 있습니다.보다 강력하고 복잡한 작업을 수행하려면 파이썬을 사용하십시오.
세 가지 구현과 그 일의 두 가지 방법으로, 일반적으로있다 : 당신은 자신에 감동 한대로
- , 도서관 수식을
- 을 평가하는 코드로 공식 집계는
두 번째 옵션은 일반적으로 일종의 플러그인으로로드 할 수있는 컴파일 작업을 수행하거나 별도의 프로그램으로 컴파일하여 필요한 출력을 생성하는 방식으로 수행됩니다.
C++의 경우 평가 용 라이브러리가 아마도 어딘가에 존재할 것이라고 생각합니다.
자신을 작성하려는 경우, "공식 오토마타"및/또는 "유한 상태 기계의 문법"일반적으로
무엇을 할 것인가하는 것은 당신이가는대로 스택에 문자를 밀어 문자열을 구문 분석입니다 검색 . 그런 다음 캐릭터를 튕겨 내고 시작된 것을 토대로 작업을 수행하십시오. 방정식을 역 마킹 표기법으로 강요하면 코딩하는 것이 더 쉽습니다.
수식을 연산 및 하위 표현식 트리로 나타낼 수 있습니다. 작업 유형 및 변수에 대한 유형 또는 상수를 정의 할 수 있습니다.
당신은 충분히 쉽게 당신이 전달 값간에 적절한 작업을 적용, 트리를 재귀 방법을 쓸 수 있습니다.
을, 여러분의 인생을 더 쉽게, 나는 이러한 종류의 입력이 가장 통해 이루어집니다지고 생각하려면 사용자가 입력 할 수있는 내용이 제한되어있는 GUI
명령 줄에서 수행 할 계획이라면 (즉, 내 게시물에서 얻은 인상), 허용 가능한 입력 집합을 엄격하게 정의해야합니다 (예 : 단 하나의 문자 변수, 공백 없음, 특정 수학 기호 : (+) */등).
그런 다음에해야합니다
이러한 작업을 수행
변수와 행동의 목록을 구축하기 위해 그것을 구문 분석 입력 char 배열에
읽기 -
BOMDAS 위해 구축하여
) 후위 표기법 (일반 compsci 할당) (나는)) 을 스택을 사용하는 값은 을 원하는)를 얻을 기다릴 줄에 삽입 사에서 방정식을 변환이에 대한 자신의 파서는 솔직 작업을해야한다 중첩 항목 스택을 가져 와서 변수의 값을 0-표시) 결과 표시
ANTLR을 사용하면 사용자 입력을 해석 할 파서/컴파일러를 생성 한 다음 방문자 패턴을 사용하여 계산을 실행할 수 있습니다. A good example is here이지만 C#에 있습니다. 필요에 따라 신속하게 적용 할 수 있어야하며 개발 플랫폼으로 C++를 사용하는 것이 좋습니다.
- 1. .NET에서 동적 문자열 수식 계산?
- 2. OpenXML SDK : 수식 재 계산
- 3. C#에서 사용자 정의 커서 사용
- 4. C++ 사용자 정의 커서 gdi 사용
- 5. 사용자 정의 속성 사용
- 6. Sql Server 계산 된 열 수식 구문
- 7. Excel 수식 : 설문 조사 통계 계산
- 8. HTML 계산 된 열 수식 도움말!
- 9. Apache POI HSSF/XSSF - 셀에없는 수식 계산
- 10. C# 사용자 정의 사용자 정의 속성
- 11. C++ 사용자 정의 예외
- 12. QGraphicsScene에서 사용자 정의 좌표 사용
- 13. PreferenceScreen에서 사용자 정의 문자판 사용
- 14. JComboBox를 사용자 정의 TableCellEditor로 사용
- 15. sharepoint 사용자 정의 웹 파트에서 asp.net 사용자 정의 컨트롤 사용
- 16. 사용자 정의 태그 외부의 사용자 정의 태그 변수 사용
- 17. 레일 사용자 정의 사용자 정의
- 18. 포장 사용 계산 알고리즘
- 19. GROUP BY에서 사용자 정의 집계 함수 사용?
- 20. 계산 된 열에서 master.sys.fn_varbintohexsubstring 사용
- 21. Janus GridEx에서 사용자 정의 컨트롤 사용
- 22. 사용자 정의 날짜 확인 형식 C#을 사용
- 23. C# Windows 응용 프로그램에서 사용자 정의 컬러 커서 사용
- 24. 사용자 정의 컨트롤에서 기본 폼으로 값 사용 (C#)
- 25. System.Data.SQLite에서 사용자 정의 함수를 작성/사용 하시겠습니까?
- 26. 사용자 정의 - 사용자 정의 속성
- 27. C# 사용자 정의 클래스 콜렉션
- 28. ASP의 다른 프로젝트에서 사용자 정의 컨트롤 사용
- 29. FAR PASCAL 사용자 정의 dll로 jna 사용
- 30. 파이썬 Yacc \ Lex를 수식 파서로 사용