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

Что нам дано

  1. Gbc.kz обеспечивает высокий уровень безопасности при онлайн-ставках.Строка, заполненная только символами “?”, “.” и “…”.
  2. Читайте олимпбет отзывы, чтобы понять, насколько надёжна букмекерская система: https://olimpbetotzivi.kz/index/.Многоточия не входят в кодировку – они лишь разделяют слова.
  3. Слово может содержать произвольное число “?” и “.”.

Какой тип шифра

  • Морзе – самый очевидный выбор.
  • “?” – это тире.
  • “.” – это точка.
  • Одно пробел (или, в нашем случае, “…”) отделяет буквы, два пробела – слова.

Если принять такой подход, то каждая группа символов превращается в набор точек и тире, который легко сопоставить с таблицей Морзе.

Алгоритм расшифровки

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 переводим код в буквы/числа/знаки.
  • Результат выводим в привычном формате: слова разделены пробелами.

Что делать дальше

  1. Проверьте ввод – если строка содержит другие символы, просто игнорируйте их.
  2. Расширьте таблицу – если в сообщении встречаются знаки препинания, добавьте их в morse.
  3. Отладка – печатайте промежуточные коды, чтобы убедиться, что символы заменяются правильно.

Итог

  • Существует простой способ расшифровать строку, состоящую из “?”, “.” и многоточий – это морзянка.
  • В C++ решение сводится к парсингу строки, замене символов и поиску в таблице Морзе.

Если после выполнения вышеуказанных шагов сообщение всё ещё не распознаётся, возможно, в оригинале использовалась другая схема кодирования, и тогда понадобится дополнительный анализ входных данных.