Форум программистов, компьютерный форум CyberForum.ru

Расшифровка Морзе - C++

Восстановить пароль Регистрация
 
MODifikaTOR18
 Аватар для MODifikaTOR18
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 17
26.05.2016, 07:17     Расшифровка Морзе #1
Делаю шифрование азбукой Морзе. Зашифровка готова, а вот с расшифровкой проблема: процесс зацикливается бесконечное число раз, а найти ошибку не могу. Может вы поможете?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
void __fastcall TForm1::Button2Click(TObject *Sender)
{String te;
 Memo1->Clear();
 int g;
 for (int i=1; i<=Memo2->Lines->Count; i++)
 {so=Memo2->Lines->Strings[i-1];
  for (int o=1; o<=so.Length(); o++)
  {for (int k=1; k<=so.Length(); k++)
   {if (so[k]==' ' && so[k+1]==' ')
     {g=k;
      break;}
    else te+=so[k];
    }
   o=g;
   if (te==".-") text+='а';
   if (te=="-...") text+='б';
   if (te==".--") text+='в';
   if (te=="--.") text+='г';
   if (te=="-..") text+='д';
   if (te==".") text+='е';
   if (te==".") text+='ё';
   if (te=="...-") text+='ж';
   if (te=="--..") text+='з';
   if (te=="..") text+='и';
   if (te==".---") text+='й';
   if (te=="-.-") text+='к';
   if (te==".-..") text+='л';
   if (te=="--") text+='м';
   if (te=="-.") text+='н';
   if (te=="---") text+='о';
   if (te==".--.") text+='п';
   if (te==".-.") text+='р';
   if (te=="...") text+='с';
   if (te=="-") text+='т';
   if (te=="..-") text+='у';
   if (te=="..-.") text+='ф';
   if (te=="....") text+='х';
   if (te=="-.-.") text+='ц';
   if (te=="---.") text+='ч';
   if (te=="----") text+='ш';
   if (te=="---.") text+='щ';
   if (te=="-..-") text+='ь';
   if (te=="-..-") text+='ъ';
   if (te=="-.--") text+='ы';
   if (te=="..-..") text+='э';
   if (te=="..--") text+='ю';
   if (te==".-.-") text+='я';
   if (te==".----") text+='1';
   if (te=="..---") text+='2';
   if (te=="...--") text+='3';
   if (te=="....-") text+='4';
   if (te==".....") text+='5';
   if (te=="-....") text+='6';
   if (te=="--...") text+='7';
   if (te=="---..") text+='8';
   if (te=="----.") text+='9';
   if (te=="-----") text+='0';
   if (te=="...... ") text+='.';
   if (te==".-.-.-") text+=',';
   if (te=="-.-.-.") text+=';';
   if (te=="---...") text+=':';
   if (te=="..--..") text+='?';
   if (te=="--..--") text+='!';
   if (te=="-....-") text+='-';
   if (te==".-..-.") text+='"';
   if (te=="----..-") text+=' ';
   }
  Memo1->Lines->Add(text);
  text="";
  te="";
  }
}
Добавлено через 39 секунд
Знаю, громоздко и быдлокод Как его компактнее переделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 07:17     Расшифровка Морзе
Посмотрите здесь:

C++ Азбука Морзе
C++ Азбука морзе
C++ Азбука Морзе
C++ Азбука Морзе
C++ Морзе в текст
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4278 / 3709 / 1246
Регистрация: 14.04.2014
Сообщений: 14,503
26.05.2016, 08:28     Расшифровка Морзе #2
Раздели по пробелу на подстроки и сравнивай. А константы - в массив.
MODifikaTOR18
 Аватар для MODifikaTOR18
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 17
26.05.2016, 09:05  [ТС]     Расшифровка Морзе #3
nmcf, а можно поподробнее?
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,957
26.05.2016, 11:06     Расшифровка Морзе #4
Дальше сами.
C++
1
2
3
4
5
    static const std::map<std::string,std::string>dict{{"...","S"},{"---","O"}};
    std::stringstream stream("... --- ...");
    std::string code;
    while(stream>>code)
        std::cout<<dict.at(code);
Yandex
Объявления
26.05.2016, 11:06     Расшифровка Морзе
Ответ Создать тему
Опции темы

Текущее время: 06:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru