inline void compute(char *strr,bool &flag)
{
int q=0;
double ff,f,f0,a,b,m;
char c,e;
flag=false;
int i0=0;
int k0=0;
double gg=NULL;
char c0;
__del();
s[h++].f='#'; //f表示运算符
s[h].k=NULL; //k表示数
__ins('=') ;
SqStack S;
InitStack_sq(S, STACK_INIT_SIZE); //
EC s1='#';
Push_sq(S,s1,gg);
while(!StackEmpty(S))
{
if( s[i0].k!=NULL)
{ suffix[k0++].k=s[i0].k;
}
else if( s[i0].f!=NULL)
{
while(GetTop_sq(S,c,f)&& ( precede(find(c),find2(s[i0].f)) )) // 4
{ // if(precede(find(c),find2(s[i0].f)))
// String sw(c); ShowMessage("取得"+sw+s[i0].f);
c0=c; //String sw(c); ShowMessage(sw);
if(c!='(')
{suffix[k0++].f=c;
}
Pop_sq(S,c,f0); // 5
if(( s[i0].f==')' ) && ( c0=='(' ))
break;
}
// if(s[i0].f!=NULL&&s[i0].f!='#'&&s[i0].f!=')')
if(s[i0].f!='#'&&s[i0].f!=')'&&s[i0].f!=NULL)
{ Push_sq(S,s[i0].f,gg); // 6
// String sw(s[i0].f); ShowMessage("插入"+sw);
}
}
i0++;
}
suffix[k0].f='\0';
while(suffix[q].f!='#' )
{ //ShowMessage("wrong");
ff=suffix[q].k;
if(suffix[q].k!=NULL)
{
qq.push(ff);
}
else
{ char ans[100],anss[100];
a=qq.top();
qq.pop();
// sprintf(ans,"a:%.10g",a);
// ShowMessage(ans);
b=qq.top();
qq.pop();
// ShowMessage("first");
// if(a<0.00001)
// ShowMessage(ans);
// sprintf(anss,"b:%.10g",b);
// ShowMessage(anss);
if(suffix[q].f=='/'&& fabs(a)<0.000001)
{
flag=true;
//ShowMessage("hello");
break;
}
else {
m=operate(b,suffix[q].f,a);// Push(Sd,m)
qq.push(m);
}
}
q++;
}
//Pop(Sd,m); //11
if(!flag)
{ m= qq.top();
if(fabs(m)>little)
sprintf(strr,"%.10g",m); //去掉零
else
sprintf(strr,"%s","0");
char ans1[100] ;
char ans3[100];
sprintf(ans3,"%s%s\t%s",quat,strr,str);
strcpy(ans1,eny(ans3));
//saveit(eny(quat));
// ShowMessage(eny(quat));
saveit(ans1); // saveit(eny(str));
//
// ShowMessage(eny(ans3));
saveit("\n");
// saveit(eny(str));
//saveit("");
}
/* char new2[1010];
strcpy(new2,eny(str));
*/
}
{
int q=0;
double ff,f,f0,a,b,m;
char c,e;
flag=false;
int i0=0;
int k0=0;
double gg=NULL;
char c0;
__del();
s[h++].f='#'; //f表示运算符
s[h].k=NULL; //k表示数
__ins('=') ;
SqStack S;
InitStack_sq(S, STACK_INIT_SIZE); //
EC s1='#';
Push_sq(S,s1,gg);
while(!StackEmpty(S))
{
if( s[i0].k!=NULL)
{ suffix[k0++].k=s[i0].k;
}
else if( s[i0].f!=NULL)
{
while(GetTop_sq(S,c,f)&& ( precede(find(c),find2(s[i0].f)) )) // 4
{ // if(precede(find(c),find2(s[i0].f)))
// String sw(c); ShowMessage("取得"+sw+s[i0].f);
c0=c; //String sw(c); ShowMessage(sw);
if(c!='(')
{suffix[k0++].f=c;
}
Pop_sq(S,c,f0); // 5
if(( s[i0].f==')' ) && ( c0=='(' ))
break;
}
// if(s[i0].f!=NULL&&s[i0].f!='#'&&s[i0].f!=')')
if(s[i0].f!='#'&&s[i0].f!=')'&&s[i0].f!=NULL)
{ Push_sq(S,s[i0].f,gg); // 6
// String sw(s[i0].f); ShowMessage("插入"+sw);
}
}
i0++;
}
suffix[k0].f='\0';
while(suffix[q].f!='#' )
{ //ShowMessage("wrong");
ff=suffix[q].k;
if(suffix[q].k!=NULL)
{
qq.push(ff);
}
else
{ char ans[100],anss[100];
a=qq.top();
qq.pop();
// sprintf(ans,"a:%.10g",a);
// ShowMessage(ans);
b=qq.top();
qq.pop();
// ShowMessage("first");
// if(a<0.00001)
// ShowMessage(ans);
// sprintf(anss,"b:%.10g",b);
// ShowMessage(anss);
if(suffix[q].f=='/'&& fabs(a)<0.000001)
{
flag=true;
//ShowMessage("hello");
break;
}
else {
m=operate(b,suffix[q].f,a);// Push(Sd,m)
qq.push(m);
}
}
q++;
}
//Pop(Sd,m); //11
if(!flag)
{ m= qq.top();
if(fabs(m)>little)
sprintf(strr,"%.10g",m); //去掉零
else
sprintf(strr,"%s","0");
char ans1[100] ;
char ans3[100];
sprintf(ans3,"%s%s\t%s",quat,strr,str);
strcpy(ans1,eny(ans3));
//saveit(eny(quat));
// ShowMessage(eny(quat));
saveit(ans1); // saveit(eny(str));
//
// ShowMessage(eny(ans3));
saveit("\n");
// saveit(eny(str));
//saveit("");
}
/* char new2[1010];
strcpy(new2,eny(str));
*/
}