Напечатать текст, подчеркивая все заглавные и строчные русские буквы, входящие в него - C (СИ)
Формулировка задачи:
Дан текст из 60 букв. Напечатать этот текст, подчеркивая (ставя минусы в соответствующих позициях следующей строки) все заглавные и строчные русские буквы, входящие в него.
Решение задачи: «Напечатать текст, подчеркивая все заглавные и строчные русские буквы, входящие в него»
textual
Листинг программы
#include <stdio.h> #include <wchar.h> #include <locale.h> #include <stdlib.h> #define RU L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" int main(void) { wchar_t buf[BUFSIZ]; if ( ! setlocale(LC_ALL, "ru_RU.UTF-8") ) { perror("setlocale"); return 1; } while ( printf("> ") && fgetws(buf, BUFSIZ, stdin) && *buf != L'\n' ) { wchar_t * p = buf; printf("> "); while ( *p ) printf("%c", ( wcschr(RU, towupper(*p++)) ) ? '-' : ' '); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с широкими символами.
- Определение строки, которую необходимо выделить.
- Установка локали на русскую, чтобы корректно работать с русскими символами.
- Создание буфера для ввода строки.
- Проверка успешности установки локали, при неудаче выводится сообщение об ошибке и возвращается 1.
- Ввод строки с помощью fgetws.
- Проверка успешности ввода строки, при неудаче выводится сообщение об ошибке и возвращается 1.
- Выделение строки для выделения заглавных и строчных букв.
- Перебор каждого символа введенной строке.
- Проверка, является ли текущий символ заглавной или строчной буквой.
- Если символ является заглавной буквой, то к нему добавляется символ подчеркивания.
- Вывод полученной строки с выделением заглавных и строчных букв.
- Ввод новой строки.
- Цикл продолжается, пока пользователь не введет пустую строку.
- Возвращение 0 по окончании работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д