С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке - C (СИ)

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

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

С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке.на СИ

Решение задачи: «С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
#define CONSONANTS "bcdfghjklmnpqrstvwxyz"
 
int main(void) {
    char buf[BUFSIZ], * ptr;
    
    while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Consonants: ") )
        for ( ptr = buf; *ptr; ++ ptr )
            if ( strchr(CONSONANTS, tolower(*ptr)) )
                printf("%c", *ptr);
    
    return 0;
}

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

В этом коде:

  1. Синтаксический анализ:
    • Используется препроцессорный директива #include для импорта необходимых библиотек: stdio.h для ввода-вывода, string.h для работы со строками и ctype.h для работы с типами символов.
    • Определяется макрос CONSONANTS, который содержит все согласные буквы в нижнем регистре.
    • Функция main описывает точку входа в программу.
    • Объявлены переменные buf и ptr. Переменная buf является буфером для ввода строки из консоли, а переменная ptr используется как указатель на текущий символ в буфере.
    • Организован цикл while, который будет выполняться до тех пор, пока пользователь не введет пустую строку.
    • Внутри цикла происходит вывод приглашения для ввода строки и самого ввода строки в буфер.
    • Далее происходит проверка на окончание строки (перевод строки \n) и переход к следующему символу в буфере.
    • Для каждого символа в буфере проверяется, является ли он согласным. Если да, то он выводится на экран.
    • В конце цикла возвращается 0, что означает успешное завершение программы.
  2. Логика работы программы:
    • Программа запрашивает у пользователя ввод строки.
    • Если пользователь вводит пустую строку, цикл завершается.
    • Для каждого символа в строке проверяется, является ли он согласным. Если да, то он выводится на экран.
    • В конце программы выводится 0, что означает успешное завершение.
  3. Ошибки и улучшения:
    • Код не обрабатывает исключения или ошибки ввода-вывода. Например, если пользователь введет больше символов, чем есть в буфере, код не будет обрабатывать переполнение буфера.
    • Код не обрабатывает неконсольные символы. Если пользователь введет символ, который не может быть преобразован в управляющий символ, код не будет знать, как с ним работать.
    • Код можно улучшить, добавив обработку исключений и ошибок ввода-вывода, чтобы программа была более надежной и устойчивой к ошибкам.

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


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

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

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