C++ 将两个阵列与结转一起添加

C++ 将两个阵列与结转一起添加,c++,C++,问题是重载加法运算符以将两个数组相加。我的问题是处理结转,如果两个数字加起来大于10,则需要将1结转到下一个加法。我并不真正理解遗留问题背后的数学/逻辑。阵列可以是任何大小,最多50个元素。任何帮助都将不胜感激 bigint operator+(bigint lhs,const bigint & rhs){ int carryover = 0; for(int i = 0; i < bigint::MAX_DIGITS;++i){ int temp = lhs.

问题是重载加法运算符以将两个数组相加。我的问题是处理结转,如果两个数字加起来大于10,则需要将1结转到下一个加法。我并不真正理解遗留问题背后的数学/逻辑。阵列可以是任何大小,最多50个元素。任何帮助都将不胜感激

bigint operator+(bigint lhs,const bigint & rhs){

  int carryover = 0;

  for(int i = 0; i < bigint::MAX_DIGITS;++i){
    int temp = lhs.digits[i] + rhs.digits[i] + carryover;

    if(lhs.digits[i] + rhs.digits[i] >= 10){
    carryover = 1;
    carryover = temp / 10;
    lhs.digits[i] = temp % 10;
    }

    lhs.digits[i] = lhs.digits[i] + rhs.digits[i] + carryover;
  }
  return lhs;
}
bigint运算符+(bigint lhs、const bigint和rhs){
int结转=0;
对于(int i=0;i=10){
结转率=1;
结转=温度/10;
左侧数字[i]=温度%10;
}
左S位数[i]=左S位数[i]+右S位数[i]+结转;
}
返回lhs;
}

可以使用模数10(
n%10
)实现结转。结转逻辑的具体问题是什么?你是否在为结果数组的大小、数学本身等而挣扎?一步一步地解决问题,就像你在学习数学时在纸上所做的那样,然后一步一步地按照你自己的编码说明进行操作,并注意差异。你会很快看到你犯的错误。这并不能解决问题,但你不需要这两个部分。两个小于10的值之和永远不会大于18。当您添加进位时,结果将永远不会大于19。所以一旦你确定有进位,
carryover=1总是正确的,
lhs.位[i]=temp-10总是正确的。