加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

BigNumberPlus大数加法

发布时间:2020-12-14 03:59:44 所属栏目:大数据 来源:网络整理
导读:/*BigNumberPlus(char* strNumLeft,char* strNumRight)@author arhaiyun*/#include "stdafx.h"#include iostream#include assert.h#include string.husing namespace std;char* BigNumberPlus(char* strNumLeft,char* strNumRight){assert(strNumLeft != NUL
/*
BigNumberPlus(char* strNumLeft,char* strNumRight)
@author arhaiyun
*/
#include "stdafx.h"
#include <iostream>
#include <assert.h>
#include <string.h>


using namespace std;
char* BigNumberPlus(char* strNumLeft,char* strNumRight)
{
	assert(strNumLeft != NULL && strNumRight != NULL);


	int lenLeft = strlen(strNumLeft);
	int lenRight = strlen(strNumRight);
	
	int maxLen = lenLeft > lenRight ? lenLeft : lenRight;
	
	char* result = new char[maxLen + 2];
	memset(result,sizeof(char) * (maxLen + 2));
	result[0] = '0';
	
	int i = lenLeft - 1;
	int j = lenRight - 1;
	int k = maxLen;
	
	while(i >=0 && j >= 0)
	{
		result[k--] = strNumLeft[i--] + strNumRight[j--] - '0';
	}


	if(i >= 0)
	{
		while(i >= 0)
			result[k--] = strNumLeft[i--];
	}
	
	if(j >= 0)
	{
		while(j >= 0)
			result[k--] = strNumLeft[j--];
	}
	
	for(i = maxLen; i > 0; i--)
	{
		if(result[i] > '9')
		{
			result[i] -= 10;
			result[i - 1] += 1;
		}
	}
	
	size_t pos = strspn(result,"0");


	printf("%sn",result + pos);
	
	return result;
}




int main(int argc,char* argv[])
{
	char strNum1[] = "7897912345678910";
	char strNum2[] = "98765432189";
	
	BigNumberPlus(strNum1,strNum2);

	system("pause");
	return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读