Строка: Найти, сколько раз в ней встречается заданное сочетание символов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Объясните как решить задачу. Дана строка длиной n. Найти, сколько раз в ней встречается заданное сочетание символов. 1. может ли пользователь вручную задать длину строки. Если да, то как? 2. как составляется условие поиска в строке нескольких символов и как вывести количество повторов на экран? 3. как найти строку, содержащую наибольшее количество слов, и удалить из этой строки самое длинное слово?

Решение задачи: «Строка: Найти, сколько раз в ней встречается заданное сочетание символов»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main ()
{
    const int N = 5, M = 80;
    char strings [N][M], *ptr, *words [25], buf [80];
    int num_word, max_len = 1, max_index = 0, i = 0;
 
    printf ("Input:\n");
    for (int max = 1; i < N; i ++)
    {
        gets (strings [i]);
        char *start = strings [i];
        int count = 1;
        while (1)
        {
            ptr = strchr (start, ' ');
            if (!ptr)
                break;
            count ++;
            start = ptr + 1;
        }
        if (count > max)
        {
            max = count;
            max_index = i;
        }
    }
 
    i = -1;
    ptr = strtok (strings [max_index], " ");
    while (ptr)
    {
        words [++ i] = ptr;
        int length = strlen (words [i]);
        if (length > max_len)
        {
            max_len = length;
            num_word = i;
        }
        ptr = strtok (NULL, " ");
    }
    for (int j = 0; j <= i; j ++)
    {
        if (j == num_word)
            continue;
        strcat (buf, words [j]);
        strcat (buf, " ");
    }
    strings [max_index][0] = '\0';
    strcpy (strings [max_index], buf);
 
    printf ("\nOutput:\n");
    for (i = 0; i < N; i ++)
        puts (strings [i]);
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Объявляются и инициализируются переменные:
    • const int N = 5 - количество строк
    • const int M = 80 - максимальная длина строки
    • char strings [N][M] - массив строк
    • char *ptr - указатель на текущий символ
    • char *words [25] - массив указателей на слова
    • int num_word - номер слова, которое повторяется максимальное количество раз
    • int max_len - максимальная длина слова
    • int max_index - индекс строки, содержащей слово, которое повторяется максимальное количество раз
    • int i - счётчик, используемый в цикле
  3. Выводится приглашение для ввода строк
  4. Циклом считываются строки
  5. Для каждого слова в строке подсчитывается количество повторений
  6. Если текущее слово длиннее максимального, то обновляется максимальная длина и номер строки, содержащей слово
  7. Если текущее слово - то, которое повторяется максимальное количество раз, то его копируют в буфер
  8. После ввода всех строк выводится результат
  9. В цикле выводятся все строки

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы