Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Ввести строку и два слова. Вывести строку, в которой все
- // вхождения первого слова заменены на второе слово.
- // доп - отсортировать слова в результирующей строке по алфавиту
- #include <stdio.h>
- #include <string.h>
- #include <string>
- int ifCharIsLetter(char s1)
- {
- const char mas[13] = {'.', ',', '!', '?', ' ', '-', ';', ':', '*','(', ')', '\0'};
- for(int i = 0; i < 12; i++)
- {
- if(s1 == mas[i])
- {
- return 0;
- }
- }
- return 1;
- }
- int main()
- {
- int len1, len2, len3, z = 0, j = 0;
- char source_str[CHAR_MAX],word_1[CHAR_MAX],word_2[CHAR_MAX],resulting_str[CHAR_MAX];;
- int Find = 1;
- puts("Enter line ");
- gets(source_str);
- puts("Enter 1st word ");
- gets(word_1);
- puts("Enter 2nd word ");
- gets(word_2);
- len1 = strlen(source_str);
- len2 = strlen(word_1);
- len3 = strlen(word_2);
- printf("The resulting line: ");
- for(int i = 0; i < len1 ; ++i)
- {
- if(((ifCharIsLetter(source_str[i]) == 1))&&((i == 0)||(ifCharIsLetter(source_str[i-1]) == 0)))
- {
- if(source_str[i] == word_1[0])
- {
- Find = 1;
- }
- for(j = 0; j < len2; ++j)
- {
- if(source_str[i+j] != word_1[j])
- {
- Find = 0;
- }
- }
- if((Find == 1)&&(ifCharIsLetter(source_str[i+j+1]) == 1))
- {
- for(int l = 0 ; l < len3 ; ++l)
- {
- resulting_str[z] = word_2[l];
- z++;
- }
- i += len2-1;
- }
- else
- {
- while(ifCharIsLetter(source_str[i]) == 1)
- {
- resulting_str[z] = source_str[i];
- i++;
- z++;
- }
- i--;
- }
- }
- else
- {
- resulting_str[z] = source_str[i];
- z++;
- }
- }
- resulting_str[z] = '\0';
- puts(resulting_str);
- char new_str[CHAR_MAX][CHAR_MAX];
- int k = 0;
- int len4 = strlen(resulting_str);
- for(int i = 0; i < len4; i++)
- if(resulting_str[i] != ' ')
- {
- for(j = 0; (ifCharIsLetter(resulting_str[i + j]) == 1) && (resulting_str[i + j] != '\0'); j++)
- new_str[k][j] = resulting_str[i + j];
- new_str[k][j] = '\0';
- k++;
- i += j;
- }
- qsort(new_str, k, CHAR_MAX, (int (*)(const void *,const void *)) strcmp);
- printf("Sorted line: ");
- for(int i = 0; i < k; i++)
- printf("%s ", new_str[i]);
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement