C/C++

Написать программу на СИ

Вывести на экран все слова текста, в которых есть сочетание букв «ch» без повторений. (текст может быть в программе)
#include <stdio.h>
#include <string.h>

int not_word_char(const char c)
{
return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '.'
|| c == ',' || c == ';' || c == ':' || c == '!' || c == '\?'
|| c == '(' || c == ')';
}

int main()
{
const char text[] = "Stanislav Cherchesov, Dmitry Cheryshev, Artem Dzyuba, Chulpan Hamatova, Denic Cheryshev.";
const int size = 50;
char word[size],words[size][size];
int qw = 0;
int len_word,len_tmp,len_text,yes_ch, povtor;
len_text = strlen(text);
for(int x = 0; x < len_text; x++)
{
if(!not_word_char(text[x]))
{
len_word = 0;
while(!not_word_char(text[x]) && x < len_text && len_word < size - 1)
{
word[len_word++] = text[x++];
}
word[len_word] = '\0';
x--;
yes_ch = 0;
for(int y = 1; y < len_word; y++)
{
if((word[y-1] == 'c' || word[y-1] == 'C') && (word[y] == 'h' || word[y] == 'H'))
{
yes_ch = 1;
break;
}
}
if(yes_ch)
{
povtor = 0;
for(int y = 0; y < qw; y++)
{
len_tmp = strlen(words[y]);
if(len_word == len_tmp)
{
int z;
for(z = 0; z < len_word; z++)
if(word[z] != words[y][z]) break;
if (z == len_word)
{
povtor = 1;
break;
}
}
}
if(povtor == 0)
{
printf("%s\n",word);
int z;
for(z = 0; z < len_word; z++)
words[qw][z] = word[z];
words[qw][z] = '\0';
qw++;
}
}
}
}

return 0;
}
Виталя Тарасов
Виталя Тарасов
51 677
Лучший ответ