开发者社区> 问答> 正文

关于C++四则运算器制作的问题,求各位大神支招.......

题目要求是:编写计算加减乘除四则程序,计算输入的表达式结果(表达式不带运算符号),例如:
1+2*3-10/2
=1+6-10/2
=7-10/5
=7-5
=2
以下是我的源码(我只做到乘除的加减的,还没加进去就好像死循环还是咋的了....):

#include 
#include 
using namespace std;
int k(char p)
{
int k,n=strlen(p);
for(int i=0;i<n;i++)
{
k=0;
if((p+i)=='/'||*(p+i)=='*')
{
k=1;
break;
}
}
return k;
}
int Jack(int a,int *c,int n,char *o)
{
int t;
for(t=0;t<n;t++)
if((o+t)=='*'&&*(o+t)=='/')break;
for(int i=t-1;i>=0;i--)
{
if(*(o+i)=='*'&&*(o+i)=='/')
{
a=i;
break;
}
}
for(int i=t+1;i<n;i++)
{
if((o+i)=='*'&&*(o+i)=='/')
{
c=i;
break;
}
}
return t;
}
int j(int r,int b)
{
int j=1;
for(int t=r;t<b-1;t++)
j=j*10;
return j;
}
int main()
{
char array[30];
cin.getline(array,30);
int m,a,b,c,x=0,y=0,z,n=strlen(array);
do{
m=k(array);
b=Jack(&a,&c,n,array);
for(int r=a+1;r<b;r++)
x=x+array[r]*j(r,b);
for(int r=b+1;r<c;r++)
y=y+array[r]*j(r,c);
if(array[b]=='')z=x*y;
else z=x/y;
array[b+1]=z;
for(int h=1;h<n-a;h++)array[b+1+h]=array[c-1+h];
cout<<"="<<array<<endl;
}while(m);
}

这个运行不了啊,应该有个地方死循环了,可是找不到,顺便问一下codeblocks的单步调试框框和步骤是怎么样的~谢谢了哈

展开
收起
a123456678 2016-03-20 11:37:37 1766 0
1 条回答
写回答
取消 提交回答
  • 首先把你的表达式转成后缀表达式,然后根据后缀表达式正常执行就可以了

    2019-07-17 19:09:18
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
继承与功能组合 立即下载
移动与复制 立即下载