Отсортировать слова в строках по количеству подряд идущих согласных букв в порядке возрастания - C (СИ)
Формулировка задачи:
Ввести текст из файла, а также массив символов-разделителей с клавиатуры. Отсортировать слова в строках по количеству подряд идущих согласных букв в порядке возрастания. Затем удалить первое и последнее слова в строках, где встречается заданное количество раз указанное пользователем слово.
Решение задачи: «Отсортировать слова в строках по количеству подряд идущих согласных букв в порядке возрастания»
textual
Листинг программы
#include <stdbool.h> #include <string.h> // максимально возможное количество слов в предложении #define MAX_WORDS 10 int consonant_counters[MAX_WORDS]; bool is_consonant(char c) { return strchr("bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ", c); } int count_consonants(char* word) { int max_consonants = 0; int cur_consonants = 0; bool previous_char_was_consonant = true; while( *word ) { if( is_consonant(*word) ) { cur_consonants = (previous_char_was_consonant)? cur_consonants + 1 : 1; previous_char_was_consonant = true; } else { previous_char_was_consonant = false; } if( cur_consonants > max_consonants ) max_consonants = cur_consonants; ++word; } return max_consonants; } int analyze_phase(char* phrase, const char* delimiters) { char* word = strtok(phrase, delimiters); int i; for( i = 0; i < MAX_WORDS; ++i ) { if( !word ) break; consonant_counters[i] = count_consonants(word); word = strtok(NULL, delimiters); } return i; // число обработанных слов в предложении } int main(int argc, char* argv[]) { char phrase[] = "The quick brown fox jumps over the lazy dog."; const char* const delimiters = " ."; int words = analyze_phase(phrase, delimiters); for( int i = 0; i < words; ++i ) { printf("%d ", consonant_counters[i]); } return 0; }
Объяснение кода листинга программы
В этом коде реализована функция сортировки слов в строке по количеству согласных букв в каждом слове. Список действий:
- Подключение необходимых библиотек: stdbool.h и string.h.
- Объявление константы MAX_WORDS, которая определяет максимальное количество слов в предложении.
- Создание массива consonant_counters для хранения количества согласных букв в каждом слове.
- Определение функции is_consonant, которая проверяет, является ли символ согласной буквой.
- Определение функции count_consonants, которая считает количество согласных букв в слове.
- Определение функции analyze_phase, которая анализирует предложение и подсчитывает количество согласных букв в каждом слове.
- В функции main создается строка phrase, содержащая предложение для анализа.
- В функции main вызывается функция analyze_phase для анализа предложения и подсчета количества согласных букв в каждом слове.
- В функции main выводится количество согласных букв в каждом слове на экран.
- Функция main возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д