您的位置:首页 > 其它

BigNumberPlus大数加法

2013-09-16 00:47 375 查看
/*
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, 0, 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("%s\n", result + pos);

return result;
}

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

BigNumberPlus(strNum1, strNum2);

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: