Задача 4.1

1. Условие

Даны натуральное число n, символы s1, s2, ... ,sn. Заменить в этой последовательности каждую группу букв child группой букв children.

2. Решение

Задаем количество символов в строке. Выделяем блок оперативной памяти под строку. Осуществляем ввод символов. Подсчитываем количество вхождений слова "child" в строке. Выделяем блок памяти под строку, куда будет записан результирующий массив. В цикле производим инициализацию нового массива. Все слова "child" заменяем на "children".

3. Алгоритм решения

4. Текст программы

1 :  #include <stdio.h>
2 :  #include <stdlib.h>
3 :  #include <conio.h>
4 :  void main()
5 :  {
6 :     int i, n, l, s=0;
7 :     char *a, *x;
8 :     clrscr( );
9 :     printf("\n Введите количество символов n \n n=");
10:     scanf("%u", &n);
11:     a=(char*)malloc( (n+1 )* sizeof(char) );
12:     getchar( );
13:     printf("\n Введите символы \n");
14:     gets(a);
15:     for(i=0; i<(n-4); i++)
16:	   if(a[i]=='c'&&a[i+l]=='h'&&a[i+2]=='i'&&a[n+3]=='l'&&a[n+4]=='d')
17:		s++;
18:     x=(char*)malloc((n+3*s+l)*sizeof(char));
19:     l=n+3*s;
20:     for(i=n; i>=0; i--)
21:	   if(a[i]!='d'||a[i-1]!='l'||a[i-2]!='i'||a[i-3]!='h'||a[i-4]!='c')
22:	   {
23:	       x[l]=a[i];
24:	       l--;
25:	   }
26:	   else
27:	   {
28:	       x[l]='n';
29:	       x[l-1]='e';
30:	       x[l-2]='r';
31:	       x[l-3]='d';
32:	       l=l-4;
33:	   }
34:     printf("\n \n Новая последовательность символов: \n %s", x );
35:     printf("\n \n \n Для завершения программы введите любой символ");
36:     getch( );
37:     free( a );
38:     free( x );
39:  } 

5. Работа программы

Введите количество символов n=13
Введите символы: chlidoprchild
Новая последовательность символов:childrenoprchildren
Для завершения программы введите любой символ

6. Проверка

Программа работает корректно.

Хостинг от uCoz