用c++实现: 输入数学表达式,输出表达式的计算结果。

输入数学表达式,输出表达式的计算结果。数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(、“)构成,例如2+3*(4+5)–6/4。假定表达式输入格式合法。... 输入数学表达式,输出表达式的计算结果。数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(、“)构成,例如 2 + 3 * ( 4 + 5 ) – 6 / 4。假定表达式输入格式合法。 展开
 我来答
匿名用户
2013-10-21
展开全部
可以办到的 但是有一定的难度。。。 我这里有个程序 是我之前写好的 表达式中只能有一个运算符 格式是 a+b a-b a/b a*b 这样的都可以 但是像你上面说的例子 是有点难度的 你可以参考下面的 自己试一试#include<iostream>
#include <string>
using namespace std;
int jisuan(int i,int &a)
{
switch(i)
{
case 1:
return a;
case 2:
return a*10;
case 3:
return a*100;
case 4:
return a*1000;
case 5:
return a*10000;
}
return -1;
}
void main()
{
int num=0,num1=0,num2=0,num3=-1;
char* c;
char c1;
string str;
cout<<"请输入一道四则运算"<<endl;
cin>>str;
for (int i=0;i<str.length();i++)
{
if (str[i]=='-')
num3=i;
if (str[i]=='+')
num3=i;
if (str[i]=='*')
num3=i;
if (str[i]=='/')
num3=i;
}
for (int j=0;j<num3;j++)
{
c1=str[j];
c=&c1;
num=atoi(c);//这个函数是把字符转换成int
num=jisuan(num3-j,num);
num1+=num;

}
for ( j=num3+1;j<str.length();j++)
{
c1=str[j];
c=&c1;
num=atoi(c);//这个函数是把字符转换成int
num=jisuan(str.length()-j,num);
num2+=num;
}
switch(str[num3])
{
case '+':
cout<<num1<<"+"<<num2<<"="<<num1+num2<<endl;
break;
case '-':
cout<<num1<<"-"<<num2<<"="<<num1-num2<<endl;
break;
case '*':
cout<<num1<<"*"<<num2<<"="<<num1*num2<<endl;;
break;
case '/':
if(num2==0)
{
cout<<"除数不能为0,程序结束"<<endl;
return ;//结束程序
}
cout<<num1<<"/"<<num2<<"="<<num1/num2<<endl;
break;
}
}
匿名用户
2013-10-21
展开全部
C++办不到,不好意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式