题目描述
请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error
输入描述:
输入为一行,包含两个字符串,字符串的长度在[1,100]。
输出描述:
输出为一行。合法情况输出相加结果,非法情况输出error
示例1
输入
123 123 abd 123
输出
246
Error
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
int isalldi(string str)
{
for (int i = 0; i < str.size(); i++)
{
if (!isdigit(str[i]))
{
cout<<"error"<<endl;
return 0;
}
}
return 1;
}
int main()
{
string a,b;
while(cin>>a>>b)
{
int sum=0;
int n=a.size();
int m=b.size();
int max = n>m?n:m;
int k = max;
int *p = (int *)malloc(sizeof(int)*max+1);memset(p, 0, sizeof(int)*max+1);
int flag=0;
if(isalldi(a) && isalldi(b))
{
while(max>0)
{
sum=(a[--n]-'0')+(b[--m]-'0')+flag;
flag=sum/10;
p[--max+1]=sum%10;
}
int x=1;
if(flag==1){
p[0]=flag;
x=0;
}
for(int i=x; i<k+1; i++){
cout<<p[i];
}
return 0;
}
}
return 0;
}