• 大小: 4KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-05-17
  • 语言: C/C++
  • 标签:

资源简介

算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。 算法输出:表达式运算结果。

资源截图

代码片段和文件信息

/*改了一下你看看行不这不是在TC的环境下编的,我尽量用TC中的库函数,有什么问题再提*/ 
/*getch()相当于getchar()只不过输入的时候不回显到屏幕上*/ 
/*如果还有错误,把错误贴出来,或者发消息给我我好改*/ 
#include  
#include  
#include  
#include  
#include  
#define N 100 
double numStack[N]={0}; 
int numTop; 
char opStack[N]; 
int opTop; 

int op(char ch) 

if(ch==‘+‘||ch==‘-‘) return 2; 
if(ch==‘*‘||ch==‘/‘) return 3; 
if(ch==‘(‘) return -1; 
return 0; 


double result(double num1char opdouble num2) 

if(op==‘+‘) return num1+num2; 
if(op==‘-‘) return num1-num2; 
if(op==‘*‘) return num1*num2; 
if(op==‘/‘) return num1/num2; 
return 0; 


int compute(char str[]) 

double num=0; 
int i=0j=1k=1; 
int Flag=0; 
numTop=opTop=0; 
while(str[i]!=‘\0‘||opTop>0) 

if(str[i]>=‘0‘&&str[i]<=‘9‘) 
if(Flag==0) 
num=num*10+str[i]-‘0‘; 
else 

num+=(str[i]-‘0‘)/(j*10.0); 
j*=10; 

else 
if(str[i]==‘.‘) 
Flag=1; 
else 
if( k==1&&str[i]==‘-‘&&(i==0||op(str[i-1])) ) 
k=-1; 
else 

if(i>0&&!op(str[i-1])&&str[i]!=‘(‘&&str[i-1]!=‘)‘) 

numStack[numTop++]=num*k; 
num=0; j=1; Flag=0; k=1; 

if(opTop==0||str[i]==‘(‘) 
opStack[opTop++]=str[i]; 
else 
if(str[i]==‘)‘) 

while(opTop>0&&opStack[--opTop]!=‘(‘) 

numStack[numTop-2]=result(numStack[numTop-2]opStack[opTop]numStack[numTop-1]); 
numTop--; 

if(opStack[opTop]!=‘(‘) return 0; 

else 

if(str[i]==‘\0‘&&numTop==0) return 0; 
while(opTop>0&&op(str[i])<=op(opStack[opTop-1])) 

numStack[numTop-2]=result(numStack[numTop-2]opStack[--opTop]numStack[numTop-1]); 
numTop--; 

if(str[i]!=‘\0‘) 
opStack[opTop++]=str[i]; 


if(str[i]!=‘\0‘) 
i++; 

if(numTop!=1||opTop!=0) 
return 0; 
return 1; 


void face() 

system(“cls“); 
printf(“__________________________________________________________________\n“); 
printf(“ Save number(S) | Read number(R) | Clear(C) | Equal(E) | Quit(Q) \n“); 
printf(“------------------------------------------------------------------\n“); 


main() 

int i=0j=0k; 
char str[N]=“\0“; 
char n

评论

共有 条评论