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

#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();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值