Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое - 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;
}

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

  1. Включаются необходимые заголовочные файлы: stdio.h, string.h и ctype.h
  2. Определяется функция flush_input, которая используется для очистки входных данных
  3. Определяется массив TABLE, который содержит соответствия между буквами и цифрами
  4. Определяется тип данных PhoneNumber, который представляет собой массив из 16 символов
  5. Определяются макросы get_phone_number и ERR_MSG
  6. В функции main создаются две переменные типа PhoneNumber: input и output
  7. В цикле while запрашивается ввод номера и преобразуется в цифровое представление
  8. Происходит преобразование введенного номера в цифровое представление
  9. Если номер не соответствует ни одному из кодов в массиве TABLE, то выводится сообщение об ошибке
  10. Выводится преобразованный номер

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


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

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

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