Advertisement
dllbridge

Untitled

Jan 3rd, 2024
817
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.28 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. #include  <iostream>
  6. #include    <string>
  7. #include       <map>
  8. using namespace std;
  9.  
  10.  
  11. string     tm(string& input),                                                 //             Прототипы функций
  12.        Letter(char);  
  13.  
  14.  
  15. map <char, string> morse
  16. {
  17.     {'A', ".-"  }, {'B', "-..."}, {'C', "-.-."}, {'D', "-.." }, {'E', "."   },
  18.     {'F', "..-."}, {'G', "--." }, {'H', "...."}, {'I', ".."  }, {'J', ".---"},
  19.     {'K', "-.-" }, {'L', ".-.."}, {'M', "--"  }, {'N', "-."  }, {'O', "---" },
  20.     {'P', ".--."}, {'Q', "--.-"}, {'R', ".-." }, {'S', "..." }, {'T', "-"   },
  21.     {'U', "..-" }, {'V', "...-"}, {'W', ".--" }, {'X', "-..-"}, {'Y', "-.--"},
  22.     {'Z', "--.."}, {' ', "/"   }
  23. };
  24.  
  25.  
  26.              
  27.  
  28.  
  29. //////////////////////////////////////////////////////////////////////////////////////
  30. int main()                                                                          //  
  31. {
  32.  
  33.     setlocale(LC_ALL, "rus");
  34.    
  35.     string       t,
  36.             result;
  37.  
  38.     cout << "Введите текст на английском языке."                    << endl;
  39.     cout << "Для завершения работы, напечатайте * и нажмите Enter." << endl;
  40.    
  41.        
  42.     while(1)
  43.     {
  44.         getline(cin, t);                                                            //  Берем строку от пользователя
  45.    
  46.         if(t == "*") {  cout << "Работа программы завершена.";     return 0; }      //         пока он не напечатает *
  47.    
  48.         result = tm(t); cout << "Ваш текст в кодировке морзе: " << result << endl;
  49.     }                                                        
  50. }
  51.  
  52.  
  53.  
  54.  
  55. //                                         Функция принимает строку для преобразования.
  56. //////////////////////////////////////////////////////////////////////////////////////
  57. string tm(string &input)                                                            //                        
  58. {
  59.  
  60.     string      Text,
  61.            morseChar;
  62.  
  63.     for(char c: input)                                   //                     цикл для перебора символов в строке
  64.     {
  65.             morseChar    =      Letter(c);               //  ввели строку, посимвольно заменили, записали результат
  66.         if(!morseChar.empty() )                          //                                           если не пусто
  67.         {
  68.             if(!Text.empty() )                           //                               если не пусто и не пробел
  69.             if( Text. back() != '/')    Text += ' ';     //  добавляем пробел между знаками на языке морзе в словах
  70.                                                                    
  71.                 Text += morseChar;                       //                 добавляем букву на языке морзе в строку
  72.         }
  73.     }
  74.    
  75. return Text;                                             //                        возваращем строку на языке морзе
  76. }
  77.  
  78.  
  79.  
  80. //                                          1)            Возвращает пустую строку или
  81. //                                          2)  соответствующий букве код азбуки Морзе.
  82. //////////////////////////////////////////////////////////////////////////////////////
  83. string Letter(char a)                                                               //
  84. {
  85.  
  86.     char    upp =      toupper(a);          // делаем из маленькой буквы большую, что бы не дублировать в контейнере
  87.     auto target = morse.find(upp);          //                                 создаем авто поиск буквы в контейнере
  88.  
  89.      
  90.     if(target == morse.end() ) return   ""      ;                      // возвращаем                   пустую строку
  91.                                return morse[upp];                      // возвращаем значение по ключу из контейнера
  92. }
  93.  
  94.  
  95.  
  96.  
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement