Отсортировать слова в строках по количеству подряд идущих согласных букв в порядке возрастания - 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;
}

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

В этом коде реализована функция сортировки слов в строке по количеству согласных букв в каждом слове. Список действий:

  1. Подключение необходимых библиотек: stdbool.h и string.h.
  2. Объявление константы MAX_WORDS, которая определяет максимальное количество слов в предложении.
  3. Создание массива consonant_counters для хранения количества согласных букв в каждом слове.
  4. Определение функции is_consonant, которая проверяет, является ли символ согласной буквой.
  5. Определение функции count_consonants, которая считает количество согласных букв в слове.
  6. Определение функции analyze_phase, которая анализирует предложение и подсчитывает количество согласных букв в каждом слове.
  7. В функции main создается строка phrase, содержащая предложение для анализа.
  8. В функции main вызывается функция analyze_phase для анализа предложения и подсчета количества согласных букв в каждом слове.
  9. В функции main выводится количество согласных букв в каждом слове на экран.
  10. Функция main возвращает 0, что означает успешное выполнение программы.

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


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

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

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