Pergunta

Então, para um problema do BigInt, quero adicionar um operador, como eu mudaria meu código para isso?É apenas para praticar, mas estou tendo problemas para encontrar a solução para a mudança.

Aqui está meu operador +:

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;
Foi útil?

Solução

Por que não construir operator- em termos de x + -y...?Se você ainda não tem um operador de negação, parece bom adicionar e é mais fácil.Então você precisará consertar seu operator+ para lidar com números negativos, mas não adianta muito para ninguém se não puder.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top