Заключить слова,начинающиеся с согласной буквы в двойные кавычки - C (СИ)

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

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

Файл сдержит слова.Заключить слова,начинающиеся с согласной буквы в двойные кавычки.

Решение задачи: «Заключить слова,начинающиеся с согласной буквы в двойные кавычки»

textual
Листинг программы
#ifdef _MSC_VER
    #define _CRT_SECURE_NO_WARNINGS
#endif
 
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
 
int is_consonant(int ch)
{
    ch = tolower(ch);
    return 
        ch == 'b' ||
        ch == 'c' ||
        ch == 'd' ||
        ch == 'f' ||
        ch == 'g' ||
        ch == 'h' ||
        ch == 'j' ||
        ch == 'k' ||
        ch == 'l' ||
        ch == 'm' ||
        ch == 'n' ||
        ch == 'p' ||
        ch == 'r' ||
        ch == 's' ||
        ch == 't' ||
        ch == 'v' ||
        ch == 'w' ||
        ch == 'x' ||
        ch == 'y' ||
        ch == 'z';
}
 
void while_not_end_word(FILE *file, const char* after)
{
    int ch = EOF;
    while (!feof(file) && (ch = getc(file)) != EOF && isalpha(ch))
        putchar(ch);
    printf(after);
    if (ch != EOF)
        putchar(ch);
}
 
void func(const char* filename, const char* quote)
{
    int ch = EOF;
    int preview_char_is_not_letter = 1;
    FILE *file = fopen(filename, "r");
    while (!feof(file))
    {
        ch = getc(file);
        if (preview_char_is_not_letter && is_consonant(ch))
        {
            printf(quote);
            putchar(ch);
            while_not_end_word(file, quote);
            preview_char_is_not_letter = 1;
            continue;
        }
        else if (ch != EOF)
            putchar(ch);
        preview_char_is_not_letter = !isalpha(ch);
    }
    fclose(file);
}
 
int main(void)
{
    func("text.txt", "\"");
    putchar('\n');
#ifdef _MSC_VER
    system("pause");
#endif
    return EXIT_SUCCESS;
}

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

  1. Преобразует нижний регистр символа в верхний регистр.
  2. Проверяет, является ли символ согласной буквой.
  3. Проверяет, является ли текущий символ буквой.
  4. Если текущий символ является согласной буквой, выводит символ в кавычках.
  5. Если текущий символ не является согласной буквой, выводит символ.
  6. Проверяет, является ли предыдущий символ буквой.
  7. Если предыдущий символ является буквой, выводит символ в кавычках.
  8. Если предыдущий символ не является буквой, выводит символ.
  9. Выводит кавычки.
  10. Выводит символ новой строки.
  11. Выполняет системную команду pause.
  12. Возвращает успешное завершение.

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


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

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

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