#include
#include
#include
#include
#define BUF_MAX 100
double handle(char *str) //处理没括号的
{
double res,*data=NULL,*data_old=NULL;
char *flag=NULL,*flag_old=NULL,*temp=str,*temp_old=str;
int n=0,m=0,i=0;
assert(NULL!=str);
while(*temp)
{
if(*temp==' ')
strcpy(temp,temp+1);
else
temp++;
}
temp=str;
while(*temp)
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if (*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
n++;
temp++;
}
flag_old=(char *)malloc(sizeof(char)*n);
if(NULL==flag_old)
{
perror(malloc fail!\n);
}
data_old=(double *)malloc(sizeof(double)*(n+1));
if(NULL==data_old)
{
perror(malloc fail!\n);
}
temp=str;
flag=flag_old;
data=data_old;
while(*temp!='\0')
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if(*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
{
*flag++=*temp;
*temp='\0';
*data++=atof(temp_old);
temp_old=temp+1;
}
temp++;
}
*data=atof(temp_old);
flag=flag_old;
data=data_old;
do
{
m=n;
for(i=0;i