Предполагается, что этот цикл добавляет два числа, которые сохраняются в векторах по их отдельным цифрам. Так, например, leftc будет содержать [10] {0,9,0,0,0,0,0,0,5,7}, а rightc будет содержать
[10] {0,0,0,0,0,0,0,0,9,6} и в конце цикла number
должно содержать «0900000153» (начальные нули удаляются позже в программе) , Он работает отлично, пока не достигнет index = 0, а затем вызывает ошибку переполнения, но я не могу понять, почему.
string number; // accumulates the result of the addition
int num; // holds the result of adding corresponding elements
short carry = 1;
for ( size_t index = leftc.size() - 1; index >= 0; index-- ) // start from the end of the vectors and work toward the beginning
{
num = leftc.at(index) + rightc.at(index); // add the two elements and store in num
if ( num >= 10 )
{
num %= 10;
leftc.at(index - 1) += carry;
}
num += '0'; // convert num from int to char
number.insert( number.begin(), num ); // store num at front of number
}
Любая помощь очень ценится. Спасибо!