Задана строка подсчитать количество вхождении самого часто встречающегося слова в этом строке - C (СИ)
Формулировка задачи:
Задана строка подсчитать количество вхождении самого часто встречающегося слова в этом строке
Решение задачи: «Задана строка подсчитать количество вхождении самого часто встречающегося слова в этом строке»
textual
Листинг программы
#include <stdlib.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s1[200],s0[200];
int i, j, s, l;
printf("Введите первую строку:");
gets(s1);
printf("Введите подстроку:");
gets(s0);
if (strlen(s0) > strlen(s1))
{
printf("Количество вхождений: 0");
return 0;
}
for(i = 0, j = 0, s = 0, l = 0; i <= strlen(s1); i++)
{
if(s1[i] == s0[j])
{
s++;
j++;
}
else
{
s = 0;
j = 0;
}
if(s == strlen(s0))
{
l++;
s = 0;
j = 0;
}
}
if (s1 [strlen(s1)] == s0[0])
{
l--;
}
printf("Количество вхождений подстроки = %d",l);
return 0;
}
Объяснение кода листинга программы
Выполняемый код на языке C выполняет следующие действия:
- Устанавливает кодировку консоли на Windows-1251.
- Объявляет массивы строк s1 и s0 для ввода пользователем строки и подстроки соответственно.
- Устанавливает начальные значения переменных i, j, s и l равными нулю.
- Запрашивает у пользователя ввод первой строки и подстроки.
- Проверяет, является ли длина подстроки больше длины первой строки, и выводит сообщение, если это так.
- Использует цикл for для сравнения символов первой строки с символами подстроки.
- Если символы совпадают, увеличивает счетчик s на единицу и увеличивает счетчик j на единицу.
- Если символы не совпадают, сбрасывает счетчики s и j до нуля.
- Если длина подстроки равна длине строки, увеличивает счетчик l на единицу и сбрасывает счетчики s и j до нуля.
- После прохода по всем символам первой строки, проверяет, является ли последний символ первой строки равным первому символу подстроки, и уменьшает счетчик l на единицу, если это так.
- Выводит количество вхождений подстроки.
- Завершает программу.