Морзе С++ смотреть ниже
Написать консольное приложение, которое будет выполнять функцию переводчика с английского языка на код Морзе. Программа должна принимать на вход строку.
Результат работы программы - вывод на экран переведенного на код Морзе текста. Буквы в слове разделены пробелами, слова в строке - символом ''/''.
Программа должна уметь переводить в код морзе строчные и заглавные буквы русского алфавита
Реализовать возможность перевести несколько фраз за один раз без необходимости перезапуска программы.
Код программы должен состоять из функций, выполняющих единственную и конкретную задачу.
помогите
Было уже... https://otvet.mail.ru/answer/2057492050
(отступы маил ру не пропускает)
cpp
#include <iostream>
#include <unordered_map>
#include <sstream>
#include <algorithm>
// Создаем таблицу перевода английских символов в код Морзе
std::unordered_map<char, std::string> morseCode = {
{'A', ".-"}, {'B', "-..."}, {'C', "-.-."}, {'D', "-.."}, {'E', "."},
{'F', "..-."}, {'G', "--."}, {'H', "...."}, {'I', ".."}, {'J', ".---"},
{'K', "-.-"}, {'L', ".-.."}, {'M', "--"}, {'N', "-."}, {'O', "---"},
{'P', ".--."}, {'Q', "--.-"}, {'R', ".-."}, {'S', "..."}, {'T', "-"},
{'U', "..-"}, {'V', "...-"}, {'W', ".--"}, {'X', "-..-"}, {'Y', "-.--"},
{'Z', "--.."}, {'0', "-----"}, {'1', ".----"}, {'2', "..---"}, {'3', "...--"},
{'4', "....-"}, {'5', "....."}, {'6', "-...."}, {'7', "--..."}, {'8', "---.."},
{'9', "----."}
};
// Функция перевода символа в код Морзе
std::string translateCharToMorse(char ch) {
// Преобразуем символ к верхнему регистру для сопоставления с таблицей кода Морзе
ch = toupper(ch);
if (morseCode.find(ch) != morseCode.end()) {
return morseCode[ch];
}
return ""; // Если символ не найден в таблице кода Морзе, возвращаем пустую строку
}
// Функция перевода строки в код Морзе
std::string translateStringToMorse(const std::string& str) {
std::stringstream morseStream;
for (size_t i = 0; i < str.length(); ++i) {
char ch = str[i];
if (ch == ' ') {
// Разделитель слов
morseStream << " / ";
} else {
morseStream << translateCharToMorse(ch);
if (i != str.length() - 1 && str[i + 1] != ' ') {
// Разделитель букв
morseStream << " ";
}
}
}
return morseStream.str();
}
int main() {
std::string input;
while (true) {
std::cout << "Введите английскую строку для перевода на код Морзе (или 'выход' для завершения): ";
std::getline(std::cin, input);
if (input == "выход") {
break;
}
std::string translated = translateStringToMorse(input);
std::cout << "Перевод на код Морзе: " << translated << std::endl;
}
return 0;
}
Я тебе сделаю, только не понял, тебе с английского или с русского перевод?