Так что для проблемы BigInt я хочу добавить оператор, как бы я изменил свой код для этого? Это просто для практики, но у меня возникли проблемы с поиском решения для изменений.
Вот мой оператор +:
int carry = 0;
int sum;
BigInt result;
list<int>::reverse_iterator rit1 = number.rbegin();
list<int>::reverse_iterator rit2 = operand.number.rbegin();
while ( (rit1 != number.rend()) || (rit2 != operand.number.rend()) )
{
sum = 0;
if (rit1 != number.rend())
{
sum += *rit1;
rit1++;
}
if (rit2 != operand.number.rend())
{
sum += *rit2;
rit2++;
}
sum += carry;
result.number.push_front(sum % 10);
carry = sum / 10;
}
if (carry > 0)
result.number.push_front(carry);
return result;
Почему бы не построить operator-
с точки зрения x + -y
…? Если у вас еще нет оператора отрицания, кажется, что это хорошо для добавления и проще. Тогда вам нужно будет починить operator+
обрабатывать отрицательные числа, но это никому не нужно, если это невозможно.
Других решений пока нет …