2014-04-14 5 views
0

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; 
+0

프로토 타입과 종료 중괄호를 포함하는 것은 어떻습니까? 어쨌든 멋진 코드 벽. – Deduplicator

+1

OP에서 연산자를 선언하는 데 문제가 있다고 생각하지 않습니다. BigInt 태그가 추가되어 BigInt에 대한 더하기 연산이 수행되고 빼기 작업을 수행하는 방법을 알고 싶습니다. – Brandon

+0

@CantChooseUsernames, 정확합니다. – Midge

답변

0

x + -y의 측면에서 operator-를 구축 : 여기

내 연산자 +입니까? 부정 연산자가 아직없는 경우 추가하기가 쉽고 쉽습니다. 그런 다음 음수를 처리하도록 operator+을 수정해야하지만 그렇지 않은 경우 누구에게나별로 유용하지 않습니다.