就是一个简单地计算器,能处理一串输入
程序是没有什么问题的,但是我看不懂为什么expr()函数里的value会显示出来
??
expr()里面不是没有return value这句吗
疑惑啊 哪位指点一下
#include <iostream>
#include<cstdlib>
#include<cctype>
using namespace std;
void eatspaces(char* str);
double expr(char* str);
double term(char* str,int& index);
double number(char* str,int& index);
const int MAX =80;
int main()
{
char buffer[MAX]={0};
cout<<endl
<<"Welcome!"
<<endl
<<"Enter an expression,or an empty line to quit."
<<endl;
for(;;)
{
cin.getline(buffer,sizeof buffer);
eatspaces(buffer);
if(!buffer[0])
return 0;
cout<<"="<<expr(buffer)<<endl;
}
}
void eatspaces(char* str)
{
int i=0;
int j=0;
while((*(str+i)=*(str+j++))!='\0')
if(*(str+i)!=' ')
i++;
return;
}
//Function to evaluate an arithmetic expression
double expr(char* str)
{
double value=0.0;
int index=0;
value=term(str,index);
for(;;)
switch(*(str+index++))
{
case '\0':
return value;
case '+':
value+=term(str,index);
break;
case '-':
value-=term(str,index);
break;
default:
cout<<endl
<<"Arrrgh!*#!! There's an error"
<<endl;
exit(1);
}
}
//Function to get the value of a term
double term(char* str,int& index)
{
double value=0.0;
value=number(str,index);
while((*(str+index)=='*')||(*(str+index)=='/'))
{
if(*(str+index)=='*')
value *=number(str,++index);
if(*(str+index)=='/')
value /=number(str,++index);
}
return value;
}
//Function to recognize anumber in a string
double number(char* str,int& index)
{
double value =0.0;
while(isdigit(*(str+index)))
value=10*value+(*(str+index++)-'0');
if(*(str+index)!='.')
return value;
double factor=1.0;
while(isdigit(*(str+(++index))))
{
factor *=0.1;
value=value+(*(str+index)-'0')*factor;
}
return value;
}
程序是没有什么问题的,当时我看不懂为什么expr()函数里的value会显示出来
??
expr()里面不是没有return value这句吗
疑惑啊 哪位指点一下
MYYA
MM们