1002/大數加法

對比別人寫的代碼  他人代碼

以下是自己寫的

# include <iostream>
# include <malloc.h>
# include <string.h>
using namespace std;

# define TASE_NUM 20
# define STR_LEN 1005
char * res[TASE_NUM];
void f(char * a,char * b,int i)
{
	int len_a,len_b,len_big,len_small;
	res[i] = (char *)malloc(sizeof(char) * STR_LEN);
	int   j,n=0;
	char flag = '0';
	char * big;
	char * small;
	len_a = strlen(a);
	len_b = strlen(b);

	if(len_a >= len_b )
	{
		len_big = len_a;
		len_small = len_b;
		big = a;
		small = b;
	}
	else
	{
		len_big = len_b;
		len_small = len_a;
		big = b;
		small = a;
	}


	for(j = len_big;j > 0; --j )
	{
		--len_big;
		--len_small;
		if(len_small >= 0)
		{
		(*(res+i))[n] = ( *(big+len_big) - '0' + *(small + len_small) - '0' + flag -'0' ) % 10 + '0';
		flag = ( *(big+len_big) - '0' + *(small + len_small) - '0' + flag-'0') / 10 +'0' ;
		n++;
		}
		else
		{
			(*(res+i))[n] = ( *(big+len_big) - '0' +  flag -'0') % 10 +'0';
			flag = ( *(big+len_big) - '0' + flag-'0') / 10+'0';
			n++;
		}
	}
	if(flag-'0' > 0)
		(*(res+i))[n] = flag;
	else
		--n;
	if(i>0)
		cout<<endl;
	cout<<"Case "<<(i+1)<<":"<<endl;
	cout<<a<<" + "<<b<<" = ";
	for( ;n >= 0;--n)
		cout<<( (*(res+i))[n]);
	cout<<endl;
	
	
	
}
int main()
{
	int tase_num;
	int i;
	char * str_a[TASE_NUM];
	char * str_b[TASE_NUM];

	cin>>tase_num;
	for(i = 0; i < tase_num; ++i)
	{
		str_a[i] = (char*)malloc(sizeof(char) * STR_LEN);
		str_b[i] = (char*)malloc(sizeof(char) * STR_LEN);
		cin>>str_a[i]>>str_b[i];


	}
	for(i = 0; i < tase_num; ++i)
	{
		f(str_a[i],str_b[i],i);
	}


	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章