Определить, сколько раз в строке встречается заданное слово - C (СИ)
Формулировка задачи:
4,3) Определить, сколько раз в строке встречается заданное слово
Решение задачи: «Определить, сколько раз в строке встречается заданное слово»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define ARRAY_SIZE 500
#define WORD_SIZE 20
int main ( void )
{
char sequenceArray[ARRAY_SIZE] = "";
char wordArray[WORD_SIZE] = "";
signed short counterA = 0, counterB = 0, counterC = 0;
signed char currentCharacter, word = 0;
puts( "Enter search word: ");
fflush( stdout );
fgets( wordArray, WORD_SIZE, stdin );
wordArray[strlen(wordArray) - 1] = 0;
puts( "Enter sequence in which search the word" );
fflush( stdout );
while ((currentCharacter = getchar()) != EOF && counterA < ARRAY_SIZE - 1 ) {
sequenceArray[counterA++] = currentCharacter;
}
sequenceArray[counterA] = '\0';
for ( counterB = 0; counterB < counterA; ++counterB ) {
if ( counterC == strlen( wordArray)) {
++word;
counterC = 0;
}
if ( sequenceArray[counterB] == wordArray[counterC])
++counterC;
else
counterC = 0;
}
printf( "\n%s%-2hi%s\n", "The word was found ", word, "times" );
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены массив символов
sequenceArrayдля хранения последовательности символов и переменнаяcounterAдля подсчета количества символов в последовательности. - Пользователю предлагается ввести искомое слово.
- Пользователю предлагается ввести последовательность, в которой нужно искать слово.
- В цикле, пока не достигнут конец файла и количество символов в последовательности меньше ARRAY_SIZE, происходит добавление символов в
sequenceArray. - В конце цикла добавляется нулевой символ в
sequenceArray. - В цикле, начиная с 0 символа последовательности, проверяется каждый символ на равенство с текущим символом искомого слова. Если символы совпадают, увеличивается счетчик
counterC. Если символы не совпадают, счетчикcounterCсбрасывается до 0. - В конце программы выводится количество вхождений искомого слова в последовательность.