333 lines
12 KiB
C
333 lines
12 KiB
C
|
/********************************************************************
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2014/04/14
|
|||
|
<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:PDSFormula.h
|
|||
|
ԭʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>еĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CString<EFBFBD><EFBFBD><EFBFBD>͵Ĺ<EFBFBD>ʽ,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>CPDSFormula<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPDSFormula::SetFormula<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øýӿ<EFBFBD>,<EFBFBD><EFBFBD>Ҫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
(2)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPDSFormula::AnalyseString<EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listFormulaItem<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
<EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,m_dConstNumber<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,m_dConstNumber<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ֵ,
|
|||
|
<EFBFBD>ر<EFBFBD>˵<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[-<EFBFBD><EFBFBD>Χ/4]<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ[0-<EFBFBD><EFBFBD>Χ/4],
|
|||
|
<EFBFBD>ڸò<EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>m_listCalculateFormula<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
(3)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ֵʱ,Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listCalculateFormula<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ糤<EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>m_dConstNumber<EFBFBD><EFBFBD>,<EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD>CalculateResult,<EFBFBD>䷵<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ע<EFBFBD><EFBFBD>:
|
|||
|
(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PDS<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>㷨,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>궨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD>Ķ<EFBFBD>
|
|||
|
(2)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPDSFormula::SemanticAnalysis<EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD>㷨:<EFBFBD><EFBFBD><EFBFBD>蹫ʽ<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>m_iFormulaType<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĹ<EFBFBD>ʽ<EFBFBD><EFBFBD>m_iFormulaType<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
(3)<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listLengthVariableName<EFBFBD><EFBFBD>m_listAngleVariableName,ǰ<EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱһ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>/<EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
(4)<EFBFBD><EFBFBD><EFBFBD>еij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>public<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>,û<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
<EFBFBD>ļ<EFBFBD>¼:
|
|||
|
<EFBFBD>汾<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*********************************************************************/
|
|||
|
#ifndef PDSFORMULA_H
|
|||
|
#define PDSFORMULA_H
|
|||
|
|
|||
|
#include <afxwin.h>
|
|||
|
#include <afxtempl.h>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㼶<EFBFBD><E3BCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
|
|||
|
#define PDS_F_OT_NULL 0x00000000 //
|
|||
|
#define PDS_F_OT_ADD 0x00000001 //+ <20><>
|
|||
|
#define PDS_F_OT_SUB 0x00000002 //- <20><>
|
|||
|
#define PDS_F_OT_MULT 0x00000004 //* <20><>
|
|||
|
#define PDS_F_OT_DIV 0x00000008 /// <20><>
|
|||
|
#define PDS_F_OT_LBRACKET 0x00000010 //( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define PDS_F_OT_RBRACKET 0x00000020 //) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define PDS_F_OT_SQR 0x00000040 //<2F><> <20><><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
#define PDS_F_OT_SIN 0x00000080 //sin
|
|||
|
#define PDS_F_OT_COS 0x00000100 //cos
|
|||
|
#define PDS_F_OT_TG 0x00000200 //tg
|
|||
|
#define PDS_F_OT_CTG 0x00000400 //ctg
|
|||
|
#define PDS_F_OT_ARCSIN 0x00000800 //arcsin
|
|||
|
#define PDS_F_OT_ARCCOS 0x00001000 //arccos
|
|||
|
#define PDS_F_OT_ARCTG 0x00002000 //arctg
|
|||
|
#define PDS_F_OT_ARCCTG 0x00004000 //arcctg
|
|||
|
|
|||
|
#define PDS_FORMOULA_STACK_SIZE 100
|
|||
|
#define PDS_FOT_MAX_LENGTH 7 //ʹ<><CAB9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
enum PDS_ERROR_INFO
|
|||
|
{
|
|||
|
NoError =0, //û<>д<EFBFBD><D0B4><EFBFBD>
|
|||
|
StackOverflow =1, //ջ<><D5BB><EFBFBD><EFBFBD>
|
|||
|
ExpressionError =2, //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ)
|
|||
|
NOLBracket =3, //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
NORBracket =4, //<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DivideZero =5, //<2F><><EFBFBD><EFBFBD>Ϊ0
|
|||
|
SqrtError =6, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>0
|
|||
|
ArcsinError =7, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>(<28><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>[-1,1]֮<><D6AE>)
|
|||
|
ArccosError =8, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>(<28><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>[-1,1]֮<><D6AE>)
|
|||
|
StringError =9 //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
|||
|
};
|
|||
|
|
|||
|
//<2F><>ʽ<EFBFBD><CABD>
|
|||
|
class CPDSFormulaItem
|
|||
|
{
|
|||
|
public:
|
|||
|
int m_iType; //=1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Ĭ<><C4AC>), =2 <20><><EFBFBD><EFBFBD>m_pData1/m_pData2, =3 <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>, =4 <20><><EFBFBD><EFBFBD>
|
|||
|
int m_iOperatorType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_iType=1ʱ<31><CAB1>Ч,ȡֵ<C8A1><D6B5>ΧPDS_F_OT_NULL~PDS_F_OT_ARCCTG
|
|||
|
int m_iUnit; //<2F><>λ,<2C>ڽǶȹ<C7B6>ʽ<EFBFBD><CABD>,<2C>ñ<EFBFBD><C3B1><EFBFBD>Ϊ-1,m_bOperator=FALSEʱ<45><CAB1>Ч,Ĭ<><C4AC>-1,<2C><><EFBFBD><EFBFBD><<PDSUnit.h>>
|
|||
|
int m_iPrecision; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ʱʹ<CAB1><CAB9>,Ĭ<><C4AC>-1,<2C><><EFBFBD><EFBFBD><<PDSUnit.h>>
|
|||
|
|
|||
|
double m_dConstNumber; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD>Ϊϵ<CEAA><CFB5>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>λΪm_iUnit,<2C><><EFBFBD><EFBFBD>λΪӢ<CEAA><D3A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
void* m_pData1; //ָ<><D6B8>1,<2C>ɸ<EFBFBD><C9B8><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ҫָ<D2AA><D6B8>
|
|||
|
void* m_pData2; //ָ<><D6B8>2
|
|||
|
CString m_strText; //<2F>ַ<EFBFBD><D6B7><EFBFBD>,<2C>ɸ<EFBFBD><C9B8><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ҫָ<D2AA><D6B8>
|
|||
|
|
|||
|
int m_iIndex; //<2F><>¼this<69><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|||
|
int m_iPower; //<2F><>¼this<69><73><EFBFBD>ݴ<EFBFBD>,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,<2C><>ֵΪ1,<2C><><EFBFBD><EFBFBD>Ϊ0
|
|||
|
|
|||
|
public:
|
|||
|
CPDSFormulaItem(void);
|
|||
|
CPDSFormulaItem(CPDSFormulaItem& rhs);
|
|||
|
~CPDSFormulaItem(void);
|
|||
|
CPDSFormulaItem& operator=(CPDSFormulaItem& rhs);
|
|||
|
BOOL operator==(CPDSFormulaItem& rhs);
|
|||
|
BOOL operator!=(CPDSFormulaItem& rhs);
|
|||
|
|
|||
|
void Init(void);
|
|||
|
};
|
|||
|
typedef CList<CPDSFormulaItem,CPDSFormulaItem&> CPDSFormulaItemList;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ʱʹ<CAB1>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
class CPDSMeasurePos
|
|||
|
{
|
|||
|
public:
|
|||
|
CString m_strMeasureName; //<2F>ڹ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>/<2F>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_iMeasureIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD>ʽ<EFBFBD>п<EFBFBD>ʼ<EFBFBD><CABC>λ<EFBFBD><CEBB>
|
|||
|
public:
|
|||
|
CPDSMeasurePos(void);
|
|||
|
CPDSMeasurePos(CPDSMeasurePos& rhs);
|
|||
|
~CPDSMeasurePos(void);
|
|||
|
CPDSMeasurePos& operator=(CPDSMeasurePos& rhs);
|
|||
|
BOOL operator==(CPDSMeasurePos& rhs);
|
|||
|
};
|
|||
|
typedef CList<CPDSMeasurePos,CPDSMeasurePos&> CPDSMeasurePosList;
|
|||
|
|
|||
|
class CPDSFormula
|
|||
|
{
|
|||
|
public:
|
|||
|
BOOL m_bOldFormoula; //=TRUE <20>ɹ<EFBFBD>ʽ, =FALSE <20>¹<EFBFBD>ʽ
|
|||
|
int m_iFormulaType; //<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>, =1 <20><><EFBFBD>ȹ<EFBFBD>ʽ(Ĭ<><C4AC>), =2 <20>Ƕȹ<C7B6>ʽ
|
|||
|
int m_iDPMM; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>λ:dpmm(ÿ<><C3BF><EFBFBD><EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ
|
|||
|
int m_iUnit; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽʱ,<2C><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD>λ
|
|||
|
int m_iPrecision; //<2F>뵥λ<EBB5A5><CEBB>Ӧ<EFBFBD>ij<EFBFBD><C4B3>Ⱦ<EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
CString m_strFormula; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ʽ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
int m_iMantissa; //<2F>ɹ<EFBFBD>ʽ<EFBFBD><CABD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ϵͳ<CFB5><CDB3>λֵ,Ŀ<><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD><D6B9>λת<CEBB><D7AA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻ<>ھɹ<DABE>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>Ч
|
|||
|
CStringList m_listLengthVariableName; //<2F><>ʾ<EFBFBD><CABE><EFBFBD>ȵı<C8B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CStringList m_listAngleVariableName; //<2F><>ʾ<EFBFBD>Ƕȵı<C8B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
CPDSFormulaItemList m_listFormulaItem; //<2F><>¼ͨ<C2BC><CDA8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>Ĺ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(<28><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>빫ʽ<EBB9AB>ַ<EFBFBD><D6B7><EFBFBD>һ<EFBFBD><D2BB>)
|
|||
|
CPDSFormulaItemList m_listCalculateFormula; //<2F><><EFBFBD>Ź<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>,<2C><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
PDS_ERROR_INFO m_ErrorInfo; //<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õı<C3B5><C4B1><EFBFBD>
|
|||
|
WORD m_iPositionIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĵ<EFBFBD>ǰλ<C7B0><CEBB>
|
|||
|
|
|||
|
CPDSFormulaItem m_CurrFormulaItem; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
CPDSMeasurePosList m_listMeasurePos; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ʱ,<2C>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ͳߴ<CDB3><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|||
|
CPDSFormulaItem m_arrFIStack1[PDS_FORMOULA_STACK_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_iStackTop1; //0..ParserStackSize;<3B><>ǰջ<C7B0><D5BB>λ<EFBFBD><CEBB>
|
|||
|
|
|||
|
CPDSFormulaItem m_arrFIStack2[2 * PDS_FORMOULA_STACK_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_iStackTop2; //0..2 * ParserStackSize;<3B><>ǰջ<C7B0><D5BB>λ<EFBFBD><CEBB>
|
|||
|
|
|||
|
public:
|
|||
|
CPDSFormula(void);
|
|||
|
CPDSFormula(CString strFormula, int iDPMM, int iUnit, int iPrecision, BOOL bOldFormoula, int iFormulaType, CStringList& listLengthVariableName, CStringList& listAngleVariableName);
|
|||
|
~CPDSFormula(void);
|
|||
|
|
|||
|
void Init(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
|||
|
void SetFormula(CString strFormula, int iDPMM, int iUnit, int iPrecision, BOOL bOldFormoula, int iFormulaType, CStringList& listLengthVariableName, CStringList& listAngleVariableName);
|
|||
|
|
|||
|
//<2F>жϹ<D0B6>ʽ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20><>ʽ<EFBFBD><CABD>ȷ,=FALSE <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
//˵<><CBB5>:
|
|||
|
// <20>жϹ<D0B6>ʽ<EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ȳߴ<C8B3>/<2F>Ƕȳߴ<C8B3><DFB4>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>
|
|||
|
BOOL IsFormulaRight(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void SetVariableName(CStringList& listLengthVariableName, CStringList& listAngleVariableName);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void AnalyseString(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>m_listCalculateFormula
|
|||
|
void SetCalculateList(void);
|
|||
|
|
|||
|
//<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ջ
|
|||
|
void Push1(CPDSFormulaItem Item);
|
|||
|
|
|||
|
//<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ջ
|
|||
|
void Pop1(CPDSFormulaItem& Item);
|
|||
|
|
|||
|
//<2F><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ջ
|
|||
|
void Push2(CPDSFormulaItem Item);
|
|||
|
|
|||
|
//<2F>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
// [<5B><><EFBFBD><EFBFBD>]Item1,Item2<6D><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =0 Item1<6D><31><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Item2; =1 Item1<6D><31><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Item2; =2 Item1<6D><31><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Item2
|
|||
|
//˵<><CBB5>:
|
|||
|
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>в<EFBFBD><D0B2>Թ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
int JudgePRI(CPDSFormulaItem Item1, CPDSFormulaItem Item2);
|
|||
|
|
|||
|
//<2F>жϸ<D0B6><CFB8><EFBFBD><EFBFBD>Ĺ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>㻹<EFBFBD><E3BBB9>˫Ŀ<CBAB><C4BF><EFBFBD><EFBFBD>()
|
|||
|
// [<5B><><EFBFBD><EFBFBD>] Item <20><>ʽ<EFBFBD><CABD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE ItemΪ˫Ŀ<CBAB><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; =FALSE Item<65><6D>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL IsDualOperator(CPDSFormulaItem Item);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>еõ<D0B5>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȷ,=FALSE <20><>ʾ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
|||
|
// <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listFormulaItem<65><6D>
|
|||
|
//˵<><CBB5>:
|
|||
|
//˼·:
|
|||
|
//1. <20><><EFBFBD>ҳ<EFBFBD><D2B3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ͳߴ<CDB3><DFB4><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>/<2F>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>;
|
|||
|
//2. <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ʱ,<2C><>ͨ<EFBFBD><CDA8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listMeasurePosѰ<73><D1B0>,<2C><>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>,<2C>Ҳ<EFBFBD><D2B2><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>һ<EFBFBD><D2BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//3. <20><>֤<EFBFBD><D6A4>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>Ϊ<EFBFBD><CEAA>,<2C><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>(<28>Ӽ<EFBFBD><D3BC>˳<EFBFBD>)<29><><EFBFBD><EFBFBD>
|
|||
|
BOOL GetStringFormulaItem(void);
|
|||
|
|
|||
|
//<2F>ҳ<EFBFBD>m_strFormula<6C>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ijߴ<C4B3><DFB4><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listMeasurePos<6F><73>
|
|||
|
void GetMeasureInfo(CPDSMeasurePosList& listMeasurePos);
|
|||
|
|
|||
|
//<2F>õ<EFBFBD><C3B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// 0 <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3A3ACBC><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// 1 <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>β
|
|||
|
// 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>:!
|
|||
|
// 3 <20><><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD>
|
|||
|
// 4 <20><><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD>
|
|||
|
// 5 <20><><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// 6 <20><><EFBFBD><EFBFBD>ֵΪ<D6B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//˵<><CBB5>:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>ͷ
|
|||
|
// ֻ<><D6BB><EFBFBD>ڵ<EFBFBD>λΪӢ<CEAA>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3>Ž<EFBFBD><C5BD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
|||
|
int NextFormulaItem(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listMeasurePos<6F>в<EFBFBD><D0B2>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6>MeasurePos
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// iIndex <20><><EFBFBD><EFBFBD>
|
|||
|
// MeasurePos [<5B><><EFBFBD><EFBFBD>]<5D>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD>ֵΪTRUEʱ<45><CAB1>Ч
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20>ҵ<EFBFBD>, =FALSE û<><C3BB><EFBFBD>ҵ<EFBFBD>
|
|||
|
//˵<><CBB5><EFBFBD><EFBFBD>
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>m_listMeasurePos<6F>Ƴ<EFBFBD>
|
|||
|
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>λ<EFBFBD>ô<EFBFBD><C3B4>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB3A4>
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>/<2F>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL FindMeasureIndex(int iIndex, CPDSMeasurePos& MeasurePos);
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>:sin, cos ,tg, ctg, arcsin, arccos, arctg, arcctg
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// strOperatorName [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// iOperatorType [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE iOperatorType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =FALSE iOperatorType<70><65><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
BOOL IsFunc(CString &strOperatorName, int &iOperatorType);
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// strVarName [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE strVarName<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,=FALSE strVarName<6D><65><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
BOOL IsVar(CString &strVarName);
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// strOperatorName [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// iOperatorType [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
// =TRUE iOperatorType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =FALSE iOperatorType<70><65><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
//˵<><CBB5>:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڸú<DAB8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽʹ<CABD>õ<EFBFBD><C3B5>Ƿ<EFBFBD><C7B7>š<EFBFBD>
|
|||
|
BOOL IsOperator(CString& strOperatorName, int& iOperatorType);
|
|||
|
|
|||
|
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>, =FALSE û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL FindVariableForName(CString strVarName);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//˵<><CBB5>:
|
|||
|
// <20>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listFormulaItem<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD>ֱ<EFBFBD>ʾ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ,<2C><>Щ<EFBFBD><D0A9>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
void SemanticAnalysis(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// listFormulaItem <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// iPower <20>ݴ<EFBFBD>,=0 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, =1 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, = 2<><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>*<2A><><EFBFBD><EFBFBD>,<2C>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void SetPower(CPDSFormulaItemList& listFormulaItem, int iPower);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>ֵ
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// listFormulaItem <20><><EFBFBD><EFBFBD>
|
|||
|
// iPower <20>ݴ<EFBFBD>, =0 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, =1 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, =2 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>*<2A><><EFBFBD><EFBFBD>,<2C>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20><>ȷ, =FALSE <20><><EFBFBD><EFBFBD>
|
|||
|
BOOL CheckPower(CPDSFormulaItemList& listFormulaItem, int iPower);
|
|||
|
|
|||
|
//<2F>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// listFormulaItem <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
// iIndexL [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
// iIndexR [<5B><><EFBFBD><EFBFBD>]<5D><>iIndexL<78><4C>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// =TRUE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(iIndexL,iIndexR)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч, =FALSE û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
BOOL HaveBracket(CPDSFormulaItemList& listFormulaItem, int& iIndexL, int& iIndexR);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// iMaxCount <20><><EFBFBD><EFBFBD>
|
|||
|
// iCount <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// alIndex [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>е<EFBFBD>alIndex[].GetCount()=iCount,<2C><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0<EFBFBD><30>ʼ,<2C>Ӵ<EFBFBD><D3B4><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
void Permutation(int iMaxCount, int iCount, CArray<CList<int,int>,CList<int,int> >& alIndex);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>INT_MAX
|
|||
|
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:ʲô<CAB2>Ǽ<EFBFBD><C7BC><EFBFBD>ʧ<EFBFBD><CAA7>?
|
|||
|
// <20><><EFBFBD><EFBFBD>:A*B+C<>ɼӺ<C9BC><D3BA><EFBFBD><EFBFBD>ӵ<EFBFBD>ÿһ<C3BF><D2BB><EFBFBD>ݴβ<DDB4><CEB2><EFBFBD>,sqrt(A+B)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,sin(A)<29><><EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD>,<2C>ȵ<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// <20>ݴ<EFBFBD>,=0 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, =1 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, = 2<><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>*<2A><><EFBFBD><EFBFBD>,<2C>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int GetPower(CPDSFormulaItemList& listFormulaItem);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
|
|||
|
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ,Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_listFormulaItem<65><6D><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>ʵ<EFBFBD><CAB5>ֵ<EFBFBD><D6B5><EFBFBD>õ<EFBFBD>m_dConstNumber<65><72>,<2C>м<EFBFBD>!!!
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// <20><><EFBFBD><EFBFBD>this<69>dz<EFBFBD><C7B3>ȹ<EFBFBD>ʽ,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>Ϊ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>this<69>ǽǶȹ<C7B6>ʽ,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ǽǶ<C7BD>
|
|||
|
double CalculateResult(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>ʽ
|
|||
|
double CalculateOldFormula(void);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD>ʽ
|
|||
|
double CalculateNewFormula(void);
|
|||
|
|
|||
|
//˫Ŀ<CBAB><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>:
|
|||
|
// iOperator <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// dValue1 <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// dValue2 <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD>)
|
|||
|
CPDSFormulaItem CalculateValue1(int iOperator, double dValue1, double dValue2);
|
|||
|
|
|||
|
//<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// iOperator <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// dValue1 <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD>)
|
|||
|
CPDSFormulaItem CalculateValue2(int iOperator, double dValue1);
|
|||
|
};
|
|||
|
|
|||
|
#endif // PDSFORMULA_H
|