Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- char *infAdd(int det, int cur, int stock, char **av)
- {
- char *result;
- int sign[2];
- int curs[2];
- int terms[2];
- sign[0] = (av[1][0] == '-') ? -1 : 1;
- sign[1] = (av[2][0] == '-') ? -1 : 1;
- curs[0] = strlen(av[1]);
- curs[1] = strlen(av[2]);
- result = malloc((curs[0] > curs[1] ? curs[0] : curs[1]) + 2);
- result[(curs[0] > curs[1] ? curs[0] : curs[1]) + 1] = '\0';
- memset(result, '0', (curs[0] > curs[1] ? curs[0] : curs[1]) + 1);
- det = 0;
- while (((cur = 0) == 1) || curs[0] >= 0 || curs[1] >= 0 || det > 0)
- {
- terms[0] = --curs[0] < 0 || av[1][curs[0]] == '-' ?
- 0 : sign[0] * (av[1][curs[0]] - 48);
- terms[1] = --curs[1] < 0 || av[2][curs[1]] == '-' ?
- 0 : sign[1] * (av[2][curs[1]] - 48);
- stock = terms[0] + terms[1] + det; /* Manage negative here */
- cur = (stock < 0 ? -stock : stock) % 10;
- det = (cur < 0) ? -1 : (stock / 10);
- result[(curs[0] > curs[1] ? curs[0] : curs[1]) + 1] = cur + 48;
- }
- return (result);
- }
- int main(int ac, char **av)
- {
- char *result;
- if (ac != 3)
- return (fprintf(stderr, "Use: %s [terms_one] [terms_two]\n", av[0]));
- result = infAdd(0, 0, 0, av);
- printf("%s\n", result);
- free(result);
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement