Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. verylong add_vl(verylong ln, verylong sn) {
  2. /*
  3. * This function calculates the sum between numbers when ln is longer than sn physically.
  4. */
  5. int i, j, len1 = strlen(ln), len2 = strlen(sn), carry = 0, sum;
  6.  
  7. // Allocating memory space for the result: (the size will be the longer number's size +2 for nullchar and carry)
  8. verylong res = (verylong)calloc(sizeof(char), (len1 + 2)), res_opt = (verylong)calloc(sizeof(char), (len1 + 1));
  9.  
  10. for (i = len1, j = len2; i > 0; i--, j--) {
  11. if (j > 0) {
  12. sum = c2n(*(ln + -1 + i)) + c2n(*(sn + j - 1));
  13. *(res + i) = n2c((sum % 10) + carry);
  14. carry = sum / 10;
  15. }
  16. else {
  17. sum = c2n(*(ln + i - 1));
  18. *(res + i) = n2c((sum % 10) + carry);
  19. carry = sum / 10;
  20. }
  21. }
  22.  
  23. *res = n2c(carry);
  24. *(res + len1 + 1) = '\0';
  25.  
  26. if (*res == '0') {
  27. strcpy(res_opt, res + 1);
  28. free(res);
  29. return res_opt;
  30. }
  31. free(res_opt);
  32.  
  33. return res;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement