Advertisement
dllbridge

Untitled

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