用C++编写实现计算器功能的应用程序
要求:能够实现简单的加、减、乘、除、乘方、开方运算,界面美观。最好能够说明下。发不下可以发我邮箱:jjang124@126.com好的话可以追加分。谢谢开方运算,界面美观...
要求:能够实现简单的加、减、乘、除、乘方、开方运算,界面美观。
最好能够说明下。
发不下可以发我邮箱:jjang124@126.com
好的话可以追加分。谢谢
开方运算,界面美观 也要满足啊。 展开
最好能够说明下。
发不下可以发我邮箱:jjang124@126.com
好的话可以追加分。谢谢
开方运算,界面美观 也要满足啊。 展开
1个回答
展开全部
已经编译运行通过:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<math.h>
int resultprocess(char mexp[],double * result);
int tokenprocess(char mexp[],double shuzhi[],char signs[]);
double resultadd(double shuzhi[],char signs[],int sp);
void main()
{
char mexp[100];
double result=0;
printf("Please input the maths expression:\n\nmexp=");
gets(mexp);
if(resultprocess(mexp,&result))
printf("\nThe result of the maths expression is:\n\nresult=%lf\n",result);
else
printf("\nThe maths expression is wrong,can't be processed!");
getch();
}
int resultprocess(char mexp[],double * result)
{
char signs[100];
double shuzhi[100];
int sp;
sp=tokenprocess(mexp,shuzhi,signs);
if(sp>0)
{
*result=resultadd(shuzhi,signs,sp);
return 1;
}
else
return 0;
}
int tokenprocess(char mexp[],double shuzhi[],char signs[])
{
char strtemp[100],chartemp;
int shuzhiflag=0,spaceflag=0,dotflag=0,sp=0,i;
signs[0]='+';
for(i=0;mexp[i]!='\0';i++)
{
chartemp=mexp[i];
if(chartemp=='+'||chartemp=='-'||chartemp=='*'||chartemp=='/'||chartemp=='^')
{
if(shuzhiflag==0)
{
if(chartemp=='-'&&sp==0)
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
else
return 0;
}
else
{
shuzhi[sp]=atof(strtemp);
sp++;
shuzhiflag=0;
spaceflag=0;
dotflag=0;
signs[sp]=chartemp;
}
}
else
if(chartemp>='0'&&chartemp<='9')
{
if(spaceflag==2)
return 0;
else
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp=='.')
{
if(dotflag==1)
return 0;
else
if(dotflag==0&&shuzhiflag==0)
return 0;
else
{
dotflag=1;
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp==' ')
{
if(shuzhiflag>0)
spaceflag=2;
else
spaceflag=1;
}
else
return 0;
}
if(shuzhiflag>0)
{
shuzhi[sp]=atof(strtemp);
sp++;
return sp;
}
else
return 0;
}
double resultadd(double shuzhi[],char signs[],int sp)
{
int i;
double result=0;
for(i=1;i<sp;i++)
if(signs[i]=='^')
{
shuzhi[i]=pow(shuzhi[i-1],shuzhi[i]);
signs[i]='*';
shuzhi[i-1]=1;
}
for(i=1;i<sp;i++)
if(signs[i]=='*'||signs[i]=='/')
{
if(signs[i]=='*')
shuzhi[i]=shuzhi[i-1]*shuzhi[i];
else
shuzhi[i]=shuzhi[i-1]/shuzhi[i];
signs[i]=signs[i-1];
shuzhi[i-1]=0;
}
for(i=0;i<sp;i++)
{
if(signs[i]=='+')
result=result+shuzhi[i];
else
result=result-shuzhi[i];
}
return result;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<math.h>
int resultprocess(char mexp[],double * result);
int tokenprocess(char mexp[],double shuzhi[],char signs[]);
double resultadd(double shuzhi[],char signs[],int sp);
void main()
{
char mexp[100];
double result=0;
printf("Please input the maths expression:\n\nmexp=");
gets(mexp);
if(resultprocess(mexp,&result))
printf("\nThe result of the maths expression is:\n\nresult=%lf\n",result);
else
printf("\nThe maths expression is wrong,can't be processed!");
getch();
}
int resultprocess(char mexp[],double * result)
{
char signs[100];
double shuzhi[100];
int sp;
sp=tokenprocess(mexp,shuzhi,signs);
if(sp>0)
{
*result=resultadd(shuzhi,signs,sp);
return 1;
}
else
return 0;
}
int tokenprocess(char mexp[],double shuzhi[],char signs[])
{
char strtemp[100],chartemp;
int shuzhiflag=0,spaceflag=0,dotflag=0,sp=0,i;
signs[0]='+';
for(i=0;mexp[i]!='\0';i++)
{
chartemp=mexp[i];
if(chartemp=='+'||chartemp=='-'||chartemp=='*'||chartemp=='/'||chartemp=='^')
{
if(shuzhiflag==0)
{
if(chartemp=='-'&&sp==0)
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
else
return 0;
}
else
{
shuzhi[sp]=atof(strtemp);
sp++;
shuzhiflag=0;
spaceflag=0;
dotflag=0;
signs[sp]=chartemp;
}
}
else
if(chartemp>='0'&&chartemp<='9')
{
if(spaceflag==2)
return 0;
else
{
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp=='.')
{
if(dotflag==1)
return 0;
else
if(dotflag==0&&shuzhiflag==0)
return 0;
else
{
dotflag=1;
strtemp[shuzhiflag]=chartemp;
strtemp[shuzhiflag+1]='\0';
shuzhiflag++;
}
}
else
if(chartemp==' ')
{
if(shuzhiflag>0)
spaceflag=2;
else
spaceflag=1;
}
else
return 0;
}
if(shuzhiflag>0)
{
shuzhi[sp]=atof(strtemp);
sp++;
return sp;
}
else
return 0;
}
double resultadd(double shuzhi[],char signs[],int sp)
{
int i;
double result=0;
for(i=1;i<sp;i++)
if(signs[i]=='^')
{
shuzhi[i]=pow(shuzhi[i-1],shuzhi[i]);
signs[i]='*';
shuzhi[i-1]=1;
}
for(i=1;i<sp;i++)
if(signs[i]=='*'||signs[i]=='/')
{
if(signs[i]=='*')
shuzhi[i]=shuzhi[i-1]*shuzhi[i];
else
shuzhi[i]=shuzhi[i-1]/shuzhi[i];
signs[i]=signs[i-1];
shuzhi[i-1]=0;
}
for(i=0;i<sp;i++)
{
if(signs[i]=='+')
result=result+shuzhi[i];
else
result=result-shuzhi[i];
}
return result;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询