Advertisement
Wrast

Success

Oct 25th, 2014
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. // Ввести строку и два слова. Вывести строку, в которой все
  2. // вхождения первого слова  заменены на второе слово.
  3. // доп - отсортировать слова в результирующей строке по алфавиту
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <string>
  8.  
  9. int ifCharIsLetter(char s1)
  10. {
  11.     const char mas[13] = {'.', ',', '!', '?', ' ', '-', ';', ':', '*','(', ')', '\0'};
  12.     for(int i = 0; i < 12; i++)
  13.     {
  14.         if(s1 == mas[i])
  15.         {
  16.             return 0;
  17.         }
  18.     }
  19.     return 1;
  20. }
  21. int main()
  22. {
  23.     int len1, len2, len3, z = 0, j = 0;
  24.     char source_str[CHAR_MAX],word_1[CHAR_MAX],word_2[CHAR_MAX],resulting_str[CHAR_MAX];;
  25.     int Find = 1;
  26.     puts("Enter line ");
  27.     gets(source_str);
  28.     puts("Enter 1st word ");
  29.     gets(word_1);
  30.     puts("Enter 2nd word ");
  31.     gets(word_2);
  32.     len1 = strlen(source_str);
  33.     len2 = strlen(word_1);
  34.     len3 = strlen(word_2);
  35.     printf("The resulting line: ");
  36.     for(int i = 0; i < len1 ; ++i)
  37.     {
  38.         if(((ifCharIsLetter(source_str[i]) == 1))&&((i == 0)||(ifCharIsLetter(source_str[i-1]) == 0)))
  39.         {  
  40.             if(source_str[i] == word_1[0])
  41.             {
  42.                 Find = 1;
  43.             }
  44.             for(j = 0; j < len2; ++j)
  45.             {
  46.                 if(source_str[i+j] != word_1[j])
  47.                 {
  48.                     Find = 0;
  49.                 }
  50.             }
  51.             if((Find == 1)&&(ifCharIsLetter(source_str[i+j+1]) == 1))
  52.             {
  53.                 for(int l = 0 ; l < len3 ; ++l)
  54.                 {
  55.                     resulting_str[z] = word_2[l];
  56.                     z++;
  57.                 }
  58.                 i += len2-1;
  59.             }
  60.             else
  61.             {
  62.                 while(ifCharIsLetter(source_str[i]) == 1)
  63.                 {
  64.                     resulting_str[z] = source_str[i];
  65.                     i++;
  66.                     z++;
  67.                 }
  68.                 i--;
  69.             }
  70.         }
  71.         else
  72.         {
  73.             resulting_str[z] = source_str[i];
  74.             z++;
  75.         }
  76.     }
  77.     resulting_str[z] = '\0';
  78.     puts(resulting_str);
  79.     char new_str[CHAR_MAX][CHAR_MAX];
  80.     int k = 0;
  81.     int len4 = strlen(resulting_str);
  82.     for(int i = 0; i < len4; i++)
  83.         if(resulting_str[i] != ' ')
  84.         {
  85.  
  86.             for(j = 0; (ifCharIsLetter(resulting_str[i + j]) == 1) && (resulting_str[i + j] != '\0'); j++)
  87.                 new_str[k][j] = resulting_str[i + j];
  88.             new_str[k][j] = '\0';
  89.             k++;
  90.             i += j;
  91.         }
  92.         qsort(new_str, k, CHAR_MAX, (int (*)(const void *,const void *)) strcmp);
  93.         printf("Sorted line: ");
  94.         for(int i = 0; i < k; i++)
  95.             printf("%s ", new_str[i]);
  96.         getchar();
  97.         return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement