无法实现三个数字以上的复合运算(包括加减乘除)c++
#include
using namespace std;
int main()
{
double a[256]={};
char ch[256] = {};
char str[256];
int m = 0;
cout << "输入表达式:" << endl;
cin >> str;
for (int i = 0; i < strlen(str); i++)//把运算符和数字分开,并分别用数组表示
{
if ((str[i] == '+') || (str[i] == '-') || (str[i] == '') || (str[i] == '/'))
{
ch[i/2] = str[i];
}
else
{
a[i / 2]=str[i]-'0';
}
}
double c=a[0];
m = strlen(str) / 2 + 1;//m为输入表达式中数字个数
for (int k = 0; k < (m-1); k++)
{
if ((ch[k] == '') || (ch[k] == '/'))//第一个运算符是乘除,直接计算
{
switch (ch[k])
{
case'':
c = a[k + 1];
break;
case '/':
c /= a[k + 1];
break;
}
}
else if ((ch[k] == '+') || (ch[k] == '-'))//第一个是加减
{
if (ch[k + 1] == '')//第二个是乘
{
switch (ch[k])
{
case '+'://+,
c += a[k + 1] * a[k + 2];
break;
case '-'://-,*
c -= a[k + 1] * a[k + 2];
break;
}
k = k + 2;
}
else if (ch[k + 1] == '/')//第二个是c除
{
switch (ch[k])
{
case '+'://+,/
c += a[k + 1] / a[k + 2];
break;
case '-'://-,/
c -= a[k + 1] / a[k + 2];
break;
}
k = k + 2;
}
else
{
switch (ch[k])
{
case'+':
c += a[k + 1];
break;
case '-':
c -= a[k + 1];
break;
}
}
}
}
if ((ch[m - 2] == '/') && (a[m - 1] == 0))
cout << "不能得出结果!" << endl;
else
{
cout << "运算结果为:" << endl;
cout << c << endl;
}
return 0;
}
c++
输入表达式:
1+2*3+1
运算结果为:
7
按任意键关闭此窗口. . .