Строка: Найти, сколько раз в ней встречается заданное сочетание символов - 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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются и инициализируются переменные:
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
- счётчик, используемый в цикле
- Выводится приглашение для ввода строк
- Циклом считываются строки
- Для каждого слова в строке подсчитывается количество повторений
- Если текущее слово длиннее максимального, то обновляется максимальная длина и номер строки, содержащей слово
- Если текущее слово - то, которое повторяется максимальное количество раз, то его копируют в буфер
- После ввода всех строк выводится результат
- В цикле выводятся все строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д