Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- char* multiply(char* str1, char* str2)
- {
- int lb1 = strlen(str1);
- int lb2 = strlen(str2);
- if (lb1 == 0 || lb2 == 0)
- return "0";
- int* result = malloc((lb1+lb2) * sizeof(int));
- for (int k = 0; k < (lb1+lb2); ++k){
- result[k] = 0;
- }
- int i_lb1 = 0;
- int i_lb2 = 0;
- for (int i=lb1-1; i>=0; i--)
- {
- int trzym = 0;
- int lb1 = str1[i] - '0';
- i_lb2 = 0;
- for (int j=lb2-1; j>=0; j--)
- {
- int lb2 = str2[j] - '0';
- int sum = lb1*lb2 + result[i_lb1 + i_lb2] + trzym;
- trzym = sum/10;
- result[i_lb1 + i_lb2] = sum % 10;
- i_lb2++;
- }
- if (trzym > 0)
- result[i_lb1 + i_lb2] += trzym;
- i_lb1++;
- }
- int i = (lb1+lb2) - 1;
- while (i>=0 && result[i] == 0)
- i--;
- if (i == -1)
- return "0";
- char* s;
- s = malloc(i*sizeof(char));
- s[0] = '\0';
- char *buffer = malloc(sizeof(char));
- buffer[0] = '\0';
- while (i >= 0){
- sprintf(buffer,"%d",result[i--]);
- strcat(s,buffer);
- };
- free(buffer);
- free(result);
- return s;
- }
- int main()
- {
- char* str1 = "12";
- char* str2 = "12";
- printf("Wynik mnozenia dwoch liczb: ");
- printf("%s\n",multiply(str1, str2));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement