怎样用c++类写一个可以运算公式的计算器源代码?
展开全部
#include<stdio.h> #include<ctype.h> #include<stdlib.h> #include <conio.h> char token[61]; int n=0; void error(void) { printf("ERROR!\n"); exit(1); } void match(char expected) { if(token[n]==expected) token[++n]=getchar(); else error(); } double term(void); double factor(void); double exp(void) { double temp=term(); while((token[n]=='+')||(token[n]=='-')) switch(token[n]) { case'+':match('+'); temp+=term(); break; case'-':match('-'); temp-=term(); break; } return temp; } double term(void) { double div; double temp=factor(); while((token[n]=='*')||(token[n]=='/')) switch(token[n]) { case'*':match('*'); temp*=factor(); break; case'/':match('/'); div=factor(); if(div==0) { printf("The divisor is zero!\n"); exit(1); } temp/=div; break; } return temp; } double factor(void) { double temp; char number[61]; int i=0; if(token[n]=='(') { match('('); temp=exp(); match(')'); } else if(isdigit(token[n])||token[n]=='.') { while(isdigit(token[n])||token[n]=='.') { number[i++]=token[n++]; token[n]=getchar(); } number='\0'; temp=atof(number); } else error(); return temp; } main() { double result; FILE *data=fopen("61590_4.dat","at"); if(data==NULL) data=fopen("61590_4.dat","wt"); if(data==NULL) return 0; token[n]=getchar(); result=exp(); if(token[n]=='\n') { token[n]='\0'; printf("%s=%g\n",token,result); fprintf(data,"%s=%g\n",token,result); } else error(); fclose(data); getch(); }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询