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