字符串加法

题目描述

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。 现在请计算A+B的结果,并以正常形式输出。

输入描述:

输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

输出描述:

请计算A+B的结果,并以正常形式输出,每组数据占一行。

示例1

输入

复制

-234,567,890 123,456,789
1,234 2,345,678

输出

复制

-111111101
2346912

这种题有点麻烦,要分情况考虑。总的运算只有加法和减法两种,但是因为数可以有负号,所以又分为负数+正数(负数绝对值大或正数绝对值大),正数加正数,负数加负数。

#include 
#include 
using namespace std;
int res[102];
//加法,这里的运算都是不带负号的 
void add(char *a,char *b){
	int len1=strlen(a);
	int len2=strlen(b);
	int p=len1-1;
	int q=len2-1;
	int c=0;
	int k=0;
	while(p>=0&&q>=0){
		if(a[p]==','){
			p--;
		} 
		if(b[q]==','){
			q--;
		}
		int temp=(a[p]-48)+(b[q]-48)+c;
		c=0;
		if(temp>9){
			res[k]=temp%10;
			k++;
			c=temp/10;
		}
		else{
			res[k]=temp;
			k++;
		}
		p--;
		q--;
	}
	while(p>=0){
		if(a[p]==','){
			p--;
		}
		int temp=a[p]-48+c;
		c=0;
		if(temp>9){
			res[k]=temp%10;
			k++;
			c=temp/10;
		}
		else{
			res[k]=temp;
			k++;
		}
		p--;
	}
	while(q>=0){
		if(b[q]==','){
			q--;
		}
		int temp=b[q]-48+c;
		c=0;
		if(temp>9){
			res[k]=temp%10;
			k++;
			c=temp/10;
		}
		else{
			res[k]=temp;
			k++;
		}
		q--;
	}
	if(c!=0){
		res[k]=c;
		k++;
	}
	for(int i=k-1;i>=0;i--){
		cout<=0&&q>=0){
		if(numa[p]>=numb[q]){
			res[k]=numa[p]-numb[q];
			k++;
		}
		else{
			if(numa[p-1]>0){
				numa[p-1]-=1;
				res[k]=numa[p]+10-numb[q];
				k++;
			}
			else{
				int pp=p-1;
				while(numa[pp]==0){
					numa[pp]+=9;
					pp--;
				}
				numa[pp]--;
				res[k]=numa[p]+10-numb[q];
				k++;
			}
		}
		p--;
		q--;
	}
	while(p>=0){
		res[k]=numa[p];
		k++;
		p--;
	}
	int temp=k-1;
	while(res[temp]==0){
		temp--;
	}
	for(int i=temp;i>=0;i--){
		cout<len2){
		return true;
	}
	else if(len1=0)return true;
		else{
			return false;
		}
	}
}
int main(){
	char a[102];
	char b[102];
	while(cin>>a>>b){
		if(a[0]!='-'&&b[0]!='-'){
			add(a,b);
		}
		else if(a[0]=='-'&&b[0]!='-'){
			if(cmp(a+1,b)){
				cout<<"-";
				sub(a+1,b); 
			}
			else{
				sub(b,a+1);
			}
		}
		else if(a[0]!='-'&&b[0]=='-'){
			if(cmp(b+1,a)){
				cout<<"-";
				sub(b+1,a); 
			}
			else{
				sub(a,b+1);
			}
		}
		else{
			cout<<"-";
			add(a+1,b+1);
		}
	}
	return 0;
}

 

你可能感兴趣的:(模拟类型题目)