Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое - C (СИ)

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

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

2. Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое, то есть нужно выполнить замену: • abcABC → 2 • defDEF → 3 • ghiGHI → 4 • jklJKL → 5 • mnoMNO → 6 • pqrsPqRS → 7 • tuvTUV → 8 • wxyzWXYZ → 9 Для замены использовать таблицу.

Решение задачи: «Преобразовать телефонный номер (слово или строка) из буквенного представления в цифровое»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. void flush_input(void) {
  6.     char c;
  7.    
  8.     while ( scanf("%c", &c) == 1 && c != '\n' )
  9.         ;
  10. }
  11.  
  12. const char* TABLE[10] = {
  13.     " ",
  14.     ".,",
  15.     "ABC",
  16.     "DEF",
  17.     "GHI",
  18.     "JKL",
  19.     "MNO",
  20.     "PQRS",
  21.     "TUV",
  22.     "WXYZ",
  23. };
  24.  
  25. typedef char PhoneNumber[16];
  26. #define get_phone_number(pn) ( scanf("%15[^\n]", (pn)) == 1 )
  27. #define ERR_MSG "ERROR"
  28.  
  29. int main(void) {
  30.     PhoneNumber input, output;
  31.    
  32.     while ( printf("Number: ") && get_phone_number(input) ) {
  33.         int i, complete = 0;
  34.         char* pIn = input, * pOut = output;
  35.        
  36.         flush_input();
  37.         while ( ! complete ) {
  38.             if ( ! *pIn ) {
  39.                 *pOut = '\0';
  40.                 complete = 1;
  41.             }
  42.             else {
  43.                 for ( i = 0; i < 10; ++i ) {
  44.                     if ( strchr(TABLE[i], toupper(*pIn)) ) {
  45.                         *pOut++ = '0' + i;
  46.                         break;
  47.                     }
  48.                 }
  49.                 if ( i == 10 ) {
  50.                     strcpy(output, ERR_MSG);
  51.                     complete = 1;
  52.                 }
  53.             }
  54.             ++pIn;
  55.         }
  56.        
  57.         printf("Call to: %s\n", output);
  58.     }
  59.    
  60.     return 0;
  61. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы