Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 15
1

Шифрование алгоритмом Цезаря

03.05.2016, 14:33. Просмотров 1106. Ответов 6
Метки нет (Все метки)


Появился такой косяк: есть кнопка, шифрующая текст методом Цезаря, но работает она неправильно (строка с комментарием). Как мне её записать по другому? Программа работает с массивом букв алфавита, через коды символов тоже пробовал, заставить функцию правильно работать не вышло.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button3Click(TObject *Sender)
{AnsiString a=Memo1->Text;
 int x=StrToInt(Edit1->Text);
 ListBox1->Items->Clear();
 ListBox2->Items->Clear();
 for(int i=1; i<=Memo1->GetTextLen(); i++)
 {for(int j=0; j<34; j++) 
  {if(a[i]==s[j])
   {a[i]=s[(j+x-34)%34];//вот здесь косяк <==
   ListBox1->Items->Add(a[i]);
   ListBox2->Items->Add(s[j]);}
   }
  }
 Memo2->Text=a;//
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2016, 14:33
Ответы с готовыми решениями:

Шифрование методом Цезаря
Кто может дать код, который бы шифровал строку(str) Методом Цезаря? Заранее спасибо.

Шифрование кириллицы методом Цезаря
Вот код он шифрует только латиницу, можно ли переделать чтобы шифровало русские символы. void...

Шифрование и дешифрование сообщения по шифру Цезаря
Подобрать ключ и расшифровать сообщение: мсштфрдъмтссдвгейлтудхстчц_

Шифрование файла методом цезаря (проблема не в алгоритме, а считывании)
При шифровании файлов с &quot;нормальными&quot; cимволами все работает прекрасно, но если шифровать к примеру...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30869 / 20190 / 7875
Регистрация: 22.10.2011
Сообщений: 35,051
Записей в блоге: 6
03.05.2016, 14:37 2
Зачем отнимаешь 34, можешь рассказать? Логика в чем?
0
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 15
03.05.2016, 15:11  [ТС] 3
volvo, Это была просто попытка оптимизации кода
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30869 / 20190 / 7875
Регистрация: 22.10.2011
Сообщений: 35,051
Записей в блоге: 6
03.05.2016, 15:17 4
Не надо сразу оптимизировать. Сначала добейся работоспособности. Не нужно там ничего отнимать, просто бери остаток от деления суммы двух значений на 34, тогда при длине алфавита = 34 (от 0-го до 33-его символа строки) все будет работать.

"Premature optimization is the root of all evil." (C) D. Knuth
0
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 15
03.05.2016, 15:36  [ТС] 5
volvo, Ваш совет не помог, еще есть какие-нибудь предложения???
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30869 / 20190 / 7875
Регистрация: 22.10.2011
Сообщений: 35,051
Записей в блоге: 6
03.05.2016, 15:49 6
Лучший ответ Сообщение было отмечено Mister Joker как решение

Решение

Есть. Написать код как положено:
C++
1
2
3
4
5
6
7
8
9
10
    String a = Memo1->Text;
    int x = StrToInt(Edit1->Text);
    ListBox1->Items->Clear();
    ListBox2->Items->Clear();
    for (int i = 1; i <= a.Length(); i++)
    {
        a[i] = s[((s.Pos(a[i]) - 1 + x) % s.Length()) + 1];
        ListBox1->Items->Add(a[i]);
    }
    Memo2->Text = a;
, и это прекрасно работает:
1
Миниатюры
Шифрование алгоритмом Цезаря  
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 15
03.05.2016, 18:39  [ТС] 7
volvo, Спасибо большое, очень помогли
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2016, 18:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Шифрование алгоритмом моноалфавитной подстановки и Алгоритмом Цезаря
Здравствуйте, помогите исправить код чтобы выводилось одинаково зашифрованное сообщение, и методом...

Шифрование алгоритмом RSA
Задается исходная строка и надо зашифровать её по алгоритму RSA Для работы с большими числами...

Шифрование Цезаря
Подскажите ребят, есть текст уже в текстовике, его нужно зашифровать. #include &lt;iostream&gt; using...

Шифрование Цезаря
Доброго времени суток, нужна Ваша помощь. Написан код и требуется, не много изменений. Шифр Цезаря,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.