Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- verylong add_vl(verylong ln, verylong sn) {
- /*
- * This function calculates the sum between numbers when ln is longer than sn physically.
- */
- int i, j, len1 = strlen(ln), len2 = strlen(sn), carry = 0, sum;
- // Allocating memory space for the result: (the size will be the longer number's size +2 for nullchar and carry)
- verylong res = (verylong)calloc(sizeof(char), (len1 + 2)), res_opt = (verylong)calloc(sizeof(char), (len1 + 1));
- for (i = len1, j = len2; i > 0; i--, j--) {
- if (j > 0) {
- sum = c2n(*(ln + -1 + i)) + c2n(*(sn + j - 1));
- *(res + i) = n2c((sum % 10) + carry);
- carry = sum / 10;
- }
- else {
- sum = c2n(*(ln + i - 1));
- *(res + i) = n2c((sum % 10) + carry);
- carry = sum / 10;
- }
- }
- *res = n2c(carry);
- *(res + len1 + 1) = '\0';
- if (*res == '0') {
- strcpy(res_opt, res + 1);
- free(res);
- return res_opt;
- }
- free(res_opt);
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement