MFC可以快速实现。我就不给出可视化部分了,因为太简单,建一个工程,然后可视化的编辑对话框,然后添加按钮,添加映射什么的。
核心算法在此,支持表达式
3 (32*23 53)/20
试试吧
/*
simple integer arithmetic calculator according to the EBNF
-> {}
-> |-
->{}
-> *
-> ( )| Number
Input a line of text from stdin
Outputs "Error" or the result。
*/
#include
#include
#include
char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);
void error(void)
{
fprintf(stderr,"Error
");
exit(1);
}
void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}
main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='
')/*check for end of line */
printf("Result = %d
",result);
else error();/*extraneous cahrs on line*/
return 0;
}
int exp(void)
{
int temp = term();
while((token==' ')||(token=='-'))
switch(token)
{
case ' ':
match(' ');
temp =term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}
int term(void)
{
int temp = factor();
while (token=='*')
{
match('*');
temp*=factor();
}
return temp;
}
int factor(void)
{
int temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%d",&temp);
token = getchar();
}
else error();
return temp;
}。
全部