带括号的四则运算C语言有注释,C语言简单计算器,实现四则运算,可带括号.doc

C语言简单计算器,实现四则运算,可带括号

C语言简单计算器,实现四则运算,可带括号

/*

1、只能进行整数运算,

2、可以有括号的嵌套,如(a+b*(c+d)-e)-f,

但对(a+((b+c)+d*e)-f)形如的算式无法计算

*/

#include

#include

#include

#include

using namespace std;

struct Element

{

double data;

char sign;

char bracket_left;

char bracket_right;

Element *next;

};

int check(char *s)

{

int count_bracket=0;

int i=0;

while(i

{

if(s[i]=='(') count_bracket++;

else if(s[i]==')') count_bracket--;

if(count_bracket<0)

return 0;

if(!(s[i]>='0'&&s[i]<='9'||s[i]==')'||s[i]=='('||s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'))

return 0;

i++;

}

if(count_bracket) return 0;

return 1;

}

void create_expression(char *s,Element *head)

{

Element *p=head;

p->next=(Element *)malloc(sizeof(Element));

p=p->next,p->next=NULL;

p->bracket_left=p->bracket_right='\0';

p->sign='\0',p->data=0;

int x=0;

while(x

{

if(s[x]>='0'&&s[x]<='9')

{

while(s[x]>='0'&&s[x]<='9'&&s[x]!='\0')

p->data*=10,p->data+=s[x++]-'0';

x--;

}

else if(s[x]=='+'||s[x]=='-'||s[x]=='*'||s[x]=='/')

{

p->next=(Element *)malloc(sizeof(Element));

if(!p->next)

{

cout<

exit(0);

}

p=p->next,p->next=NULL;

p->bracket_left=p->bracket_right='\0';

p->sign=s[x],p->data=0;

}

else if(s[x]==')')

{

p->bracket_right=')';

p->bracket_left='\0';

}

else if(s[x]=='(')

{

p->bracket_left='(';

p->bracket_right='\0';

}

x++;

}

p=head->next;

while(p->next) p=p->next;

p->next=(Element *)malloc(sizeof(Element));

p=p->next;

p->data=0,p->sign='+',p->next=NULL;

p->bracket_left=p->bracket_right='\0';

}

/*double chang_int(char *s)

{

double sum=0;

int x=0,mark=0;

while(x

{

if(s[x]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值