Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int add(const char* number1, const char* number2, char** result)
- {
- if (number1 == NULL || number2 == NULL || result == NULL) return 1;
- if (validate(number1) == 2 || validate(number2) == 2) return 2;
- int dl1 = strlen(number1), dl2 = strlen(number2),dlmax;
- if (dl1 >= dl2) dlmax = dl1;
- else dlmax = dl2;
- dlmax += 3;//ewentualne znaki
- if (*number1 == '-' && *number2 != '-')
- return subtract(number2, number1 + 1, result);
- if (*number1 != '-' && *number2 == '-')
- return subtract(number1, number2 + 1, result);
- *result = (char*)malloc(dlmax * sizeof(char));
- if (*result == NULL)
- return 3;
- if (*number1 == '-' && *number2 == '-')
- {
- int carry = 0, digit1, digit2, i;
- for (i = 0; i < dlmax - 1; i++)
- {
- /*wylaczenie liczby*/
- if (dl1 - 1 - i <= 0) digit1 = 0;
- else digit1 = *(number1 + dl1 - 1 - i) - '0';
- if (dl2 - 1 - i <= 0) digit2 = 0;
- else digit2 = *(number2 + dl2 - 1 - i) - '0';
- if (dl1 - 1 - i <= 0 && dl2 - 1 - i <= 0 && carry == 0)
- break;
- dodanie(digit1, digit2, &carry, result,i);
- }
- *(*result + i) = '-';
- *(*result + i + 1) = '\0';
- rev(*result);
- return 0;
- }
- if (*number1 != '-' && *number2 != '-')
- {
- int carry = 0, digit1, digit2, i;
- for (i = 0; i < dlmax - 1; i++)
- {
- /*wylaczenie liczby*/
- if (dl1 - 1 - i < 0) digit1 = 0;
- else digit1 = *(number1 + dl1 - 1 - i) - '0';
- if (dl2 - 1 - i < 0) digit2 = 0;
- else digit2 = *(number2 + dl2 - 1 - i) - '0';
- if (dl1 - 1 - i < 0 && dl2 - 1 - i < 0 && carry == 0)break;
- dodanie(digit1, digit2, &carry, result, i);
- }
- *(*result + i) = '\0';
- rev(*result);
- return 0;
- }
- return 0;
- }
- void dodanie(int digit1, int digit2, int *carry, char** result,int i)
- {
- if (digit1 + digit2 + *carry >= 10)
- {
- *(*result + i) = (digit2 + digit1 + *carry) % 10 + '0';
- *carry = 1;
- }
- else
- {
- *(*result + i) = (digit2 + digit1 + *carry) % 10 + '0';
- *carry = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement