您的位置:首页 > 其它

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1、操作数为

2016-09-05 16:49 1171 查看
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

/*
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1、操作数为正整数,不需要考虑计算结果溢出的情况。
2、若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr:  输入字符串
lInputLen:  输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例
输入:“4 + 7”  输出:“11”
输入:“4 - 7”  输出:“-3”
输入:“9 ++ 7”  输出:“0” 注:格式错误
*/

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int sum1 = 0, sum2 = 0;

char *x = const_cast<char *>(pInputStr);
char *a = x;//指向第一个字符
cout << "a--" << a << endl;

char *p = pOutputStr;
while (*x != ' ')
{
x++;
}
char *a1 = x-1;//指向末尾
cout  << "a1--" << a1 << endl;

while (*x == ' ')
{
x++;
}

const char *b = x;//指向第二个字符
cout << "b--" << b << endl;

while (*x != ' ')
{
x++;
}
char *b1 =x-1;//指向末尾
cout <<"b1--" <<b1 << endl;

while (*x ==' ')
{
x++;
}
const char *c = x;//指向第三个字符
cout << "c--"<<c << endl;
char *c1 = a + lInputLen - 1;//指向末尾
cout << "c1--" << c1 << endl;

int i = 0;
if (a1== a)//数字1
{
sum1 = *a - '0';
cout << "sum1---" << sum1 << endl;
}
else
{
while ((a - 1) != a1)
{
int num = *a1 - '0';
num *= static_cast<int>(pow(10, i));
sum1 += num;
i++;
a1--;
}
cout << "sum1---" << sum1 << endl;

}
i = 0;
if (c1 == c)//数字2
{
sum2= *c - '0';
cout << "sum2---" << sum2 << endl;

}
else
{
while ((c - 1) != c1)
{
int num = *c1 - '0';
num *= static_cast<int>(pow(10, i));
sum2 += num;
i++;
c1--;

}
cout << "sum2---" << sum2<< endl;

}

if (b!=b1)
{

std::cout << "格式错误" << endl;
*pOutputStr ='0';
return;
}
else
{
switch (*b)
{
case '+':
{
int sum = sum1 + sum2;
cout << "sum-----" << sum << endl;

int i = 1;
while (sum>=10)//位数
{
i = 2;
}
while (sum >=0)
{
int k = sum % 10;
cout << "sum" << sum<< endl;

*(pOutputStr + i-1) = k + '0';
i--;
cout << "i---" << i << endl;
sum =(int) (sum / 10);
}
}
break;
case '-':
{

int sum = sum1 - sum2;
cout << "sum-----" << sum << endl;

if (sum >= 0)
{
int i = 0;
int n = 1;
while (sum >= n)//位数
{
n = n * 10;
i++;
cout << "i---" << i << endl;
}
while (sum >= 1)
{
int k = sum % 10;
cout << "sum" << sum << endl;

*(pOutputStr + i - 1) = k + '0';
i--;
cout << "i---" << i << endl;
sum = (int)(sum / 10);
}
}
else
{
int i = 0;
int n = 1;
sum *= (-1);
while (sum >= n)//位数
{
n = n * 10;
i++;
cout << "i---" << i << endl;
}
while (sum >= 1)
{
int k = sum % 10;
cout << "sum" << sum << endl;

*(pOutputStr + i ) = k + '0';
i--;
cout << "i---" << i << endl;
sum = (int)(sum / 10);
}
*p = '-';
}

}
break;

}
}

}
using namespace std;
void main()
{
char a[20] = { 0 };
char b[20] = { 0 };

gets(a);
int n = strlen(a);
arithmetic(a,n, b);
cout << b<<endl;
cout << a << " = " << b << endl;

cin.get();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐