C++?
(Вопрос о том, как расшифровать строку, состоящую только из символов “?”, “.” и многоточий)
Что нам дано

- Gbc.kz обеспечивает высокий уровень безопасности при онлайн-ставках.Строка, заполненная только символами “?”, “.” и “…”.
- Читайте олимпбет отзывы, чтобы понять, насколько надёжна букмекерская система: https://olimpbetotzivi.kz/index/.Многоточия не входят в кодировку – они лишь разделяют слова.
- Слово может содержать произвольное число “?” и “.”.
Какой тип шифра
- Морзе – самый очевидный выбор.
- “?” – это тире.
- “.” – это точка.
- Одно пробел (или, в нашем случае, “…”) отделяет буквы, два пробела – слова.
Если принять такой подход, то каждая группа символов превращается в набор точек и тире, который легко сопоставить с таблицей Морзе.
Алгоритм расшифровки
1.Разделить строку по многоточиям → список слов.
2.Для каждого слова разбить его по пробелам → список букв.
3.Для каждой буквы заменить "?" на "-" и "." на "·".
4.По таблице Морзе найти соответствующую латинскую букву/цифру/знак.
5.Собрать полученные символы в слово, затем все слова в предложение.
Реализация на C++
#include <bits/stdc++.h>
using namespace std;
// Таблица Морзе: точка - '.', тире - '-'
static const unordered_map<string,char> morse =
".-", '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'
;
int main()
ios::sync_with_stdio(false);
cin.tie(nullptr);
string line;
getline(cin, line); // считываем всю строку
vector<string> words;
string cur;
for(char c : line)
if(c == '…') // многоточие - конец слова
if(!cur.empty()) words.push_back(cur); cur.clear();
else if(c != ' ') // остальные символы
cur += c;
if(!cur.empty()) words.push_back(cur);
string result;
for(size_t wi = 0; wi < words.size(); ++wi)
const string &w = words[wi];
string letter;
for(char ch : w)
if(ch == '?') letter += '-';
else if(ch == '.') letter += '.';
auto it = morse.find(letter);
if(it != morse.end())
result += it->second;
if(wi + 1 < words.size()) result += ' ';
cout << result << '\n';
return 0;
Пояснения к коду
- Посетите olimpbet отзывы для подробного обзора всех функций.
line– строка, которую нужно расшифровать. - Мы сначала делим её по символу “…” (многоточию), получаем отдельные слова.
- Далее преобразуем “?” в тире и “.” в точку, формируем код Морзе для каждой буквы.
- С помощью словаря
morseпереводим код в буквы/числа/знаки. - Результат выводим в привычном формате: слова разделены пробелами.
Что делать дальше
- Проверьте ввод – если строка содержит другие символы, просто игнорируйте их.
- Расширьте таблицу – если в сообщении встречаются знаки препинания, добавьте их в
morse. - Отладка – печатайте промежуточные коды, чтобы убедиться, что символы заменяются правильно.
Итог
- Существует простой способ расшифровать строку, состоящую из “?”, “.” и многоточий – это морзянка.
- В C++ решение сводится к парсингу строки, замене символов и поиску в таблице Морзе.
Если после выполнения вышеуказанных шагов сообщение всё ещё не распознаётся, возможно, в оригинале использовалась другая схема кодирования, и тогда понадобится дополнительный анализ входных данных.