Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое - C (СИ)
Формулировка задачи:
2. Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое, то есть нужно выполнить замену: • abcABC → 2 • defDEF → 3 • ghiGHI → 4 • jklJKL → 5 • mnoMNO → 6 • pqrsPqRS → 7 • tuvTUV → 8 • wxyzWXYZ → 9 Для замены использовать таблицу.
Решение задачи: «Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- void flush_input(void) {
- char c;
- while ( scanf("%c", &c) == 1 && c != '\n' )
- ;
- }
- const char* TABLE[10] = {
- " ",
- ".,",
- "ABC",
- "DEF",
- "GHI",
- "JKL",
- "MNO",
- "PQRS",
- "TUV",
- "WXYZ",
- };
- typedef char PhoneNumber[16];
- #define get_phone_number(pn) ( scanf("%15[^\n]", (pn)) == 1 )
- #define ERR_MSG "ERROR"
- int main(void) {
- PhoneNumber input, output;
- while ( printf("Number: ") && get_phone_number(input) ) {
- int i, complete = 0;
- char* pIn = input, * pOut = output;
- flush_input();
- while ( ! complete ) {
- if ( ! *pIn ) {
- *pOut = '\0';
- complete = 1;
- }
- else {
- for ( i = 0; i < 10; ++i ) {
- if ( strchr(TABLE[i], toupper(*pIn)) ) {
- *pOut++ = '0' + i;
- break;
- }
- }
- if ( i == 10 ) {
- strcpy(output, ERR_MSG);
- complete = 1;
- }
- }
- ++pIn;
- }
- printf("Call to: %s\n", output);
- }
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, string.h и ctype.h
- Определяется функция flush_input, которая используется для очистки входных данных
- Определяется массив TABLE, который содержит соответствия между буквами и цифрами
- Определяется тип данных PhoneNumber, который представляет собой массив из 16 символов
- Определяются макросы get_phone_number и ERR_MSG
- В функции main создаются две переменные типа PhoneNumber: input и output
- В цикле while запрашивается ввод номера и преобразуется в цифровое представление
- Происходит преобразование введенного номера в цифровое представление
- Если номер не соответствует ни одному из кодов в массиве TABLE, то выводится сообщение об ошибке
- Выводится преобразованный номер
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д