Advertisement
Guest User

/ % div

a guest
Nov 25th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. // Zapisuje a / b w result, a % b w rest
  2. void VeryLongInt::div(VeryLongInt &b, VeryLongInt *result, VeryLongInt *rest){
  3. result->digits.clear();
  4. rest->digits.clear();
  5. if (b.isZero() || !this->isValid() || !b.isValid()){
  6. *result = NaN();
  7. *rest = NaN();
  8. return;
  9. }
  10. *result = Zero();
  11. *rest = *this;
  12. VeryLongInt one = 1;
  13. while (*rest >= b){
  14. unsigned int shift = rest->numberOfBinaryDigits() - b.numberOfBinaryDigits();
  15. if (shift > 0)
  16. shift--;
  17. *rest -= b << shift;
  18. *result += one << shift;
  19. }
  20. }
  21.  
  22. VeryLongInt& VeryLongInt::operator%=(VeryLongInt &b){
  23. VeryLongInt result;
  24. VeryLongInt rest;
  25. div(b, &result, &rest);
  26. *this = rest;
  27. return *this;
  28. } //Ty
  29.  
  30. VeryLongInt& VeryLongInt::operator/=(VeryLongInt &b){
  31. VeryLongInt result;
  32. VeryLongInt rest;
  33. div(b, &result, &rest);
  34. *this = result;
  35. return b;
  36. } //T
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement