Advertisement
LilChicha174

Untitled

Dec 9th, 2021
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. # include <string.h>
  4. char* merge(char* str1, char* str2);
  5. int min(int a, int b){
  6.     if (a<b)
  7.         return a;
  8.     else
  9.         return b;
  10. }
  11. int main()
  12. {
  13.     int str1_len;
  14.     int str2_len;
  15.     scanf("%i %i", &str1_len, &str2_len);
  16.     char* str1;
  17.     char* str2;
  18.  
  19.     // Выделить память и считать строки
  20.  
  21.     str1 =malloc(str1_len*sizeof(char));
  22.     str2 =malloc(str2_len*sizeof(char));
  23.     scanf("%s", str1);
  24.     scanf("%s", str2);
  25.     printf("%s", merge(str1, str2));
  26. }
  27.  
  28. char* merge(char* str1, char* str2) {
  29.     int i = 0;
  30.     char *str = malloc((strlen(str2) + strlen(str1)+1) * sizeof(char));
  31.     if (strlen(str2) == strlen(str1)) {
  32.         for (int k = 0; k < (strlen(str2) + strlen(str1)); k += 2) {
  33.             str[k] = str1[i];
  34.             str[k + 1] = str2[i];
  35.             i++;
  36.         }
  37.         str[strlen(str2) + strlen(str1)] = '\0';
  38.     }
  39.     i = 0;
  40.     int m;
  41.     if (strlen(str1) < strlen(str2)) {
  42.         for (int k = 0; k < (strlen(str1)*2); k += 2) {
  43.             str[k] = str1[i];
  44.             str[k + 1] = str2[i];
  45.             i++;
  46.             m = k;
  47.         }
  48.         m+=2;
  49.         for (int k = m;k < (strlen(str2) + strlen(str1)); k++){
  50.             str[k] = str2[i];
  51.             i++;
  52.         }
  53.         str[strlen(str2) + strlen(str1)] = '\0';
  54.  
  55.     }
  56.     if (strlen(str1) > strlen(str2)) {
  57.         for (int k = 0; k < (strlen(str2)*2); k += 2) {
  58.             str[k] = str1[i];
  59.             str[k+1] = str2[i];
  60.  
  61.             i++;
  62.             m = k;
  63.         }
  64.         m+=2;
  65.         for (int k = m;k < (strlen(str2) + strlen(str1)); k++){
  66.             str[k] = str1[i];
  67.             i++;
  68.         }
  69.         str[strlen(str2) + strlen(str1)] = '\0';
  70.  
  71.     }
  72.     return str;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement