Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main() {
- char *num, *nam, *result;
- int carry = 0;
- num = (char*)malloc(100000000 * sizeof(char));
- nam = (char*)malloc(100000000 * sizeof(char));
- result = (char*)malloc(100000001 * sizeof(char));
- if (num == NULL || nam == NULL || result == NULL) {
- printf("alocação faiou\n");
- return 1;
- }
- printf("digite o primeiro numero: ");
- scanf(" %[^\n]s", num);
- printf("\ndigite o segundo numero: ");
- scanf(" %[^\n]s", nam);
- printf("\n\n%d\n%d\n\n", (int)strlen(num), (int)strlen(nam));
- int loopMax, loopMin;
- int len1 = strlen(num);
- int len2 = strlen(nam);
- loopMax = (len1 > len2) ? len1 : len2;
- loopMin = (len1 > len2) ? len2 : len1;
- for(int i = 0; i < loopMax; i++){
- int digit1 = (i < len1) ? num[len1 - i - 1] - '0' : 0;
- int digit2 = (i < len2) ? nam[len2 - i - 1] - '0' : 0;
- int sum = digit1 + digit2 + carry;
- carry = sum/10;
- result[i] = (sum%10) + '0';
- }
- if (carry > 0) {
- result[loopMax] = carry + '0'; // Add the final carry as the most significant digit
- result[loopMax + 1] = '\0'; // Null-terminate the result
- } else {
- result[loopMax] = '\0'; // Null-terminate the result
- }
- // Reverse the result
- int resultLen = strlen(result);
- for (int i = 0, j = resultLen - 1; i < j; i++, j--) {
- char temp = result[i];
- result[i] = result[j];
- result[j] = temp;
- }
- printf("\nResult: %s\n", result);
- free(num);
- free(nam);
- free(result);
- return(0);
- }
Add Comment
Please, Sign In to add comment