|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.11.2011, 13:23 | #1 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 12
|
ошибка в ввыводе символов
Помогите сделать афинскую дешифровку букв.Вводится слово и ключ. Нужно переставить каждую букву на столько позиций сколько задан ключ.
Шифровать получается все правильно, а вот наоборот не хочет возращять слово. Если ввести qwerty и ключ 3 получится sygtva.Но назад не получается слово qwerty. PHP код:
Последний раз редактировалось bloger; 07.11.2011 в 20:06. |
07.11.2011, 14:37 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Попробуйте передавать массивы в функции через аргументы, а не через глобальные переменные. А заодно и все остальные переменные, типа счётчиков циклов, не делайте глобальными - во всей этой программе глобальны только алфавит и число символов в нём.
|
07.11.2011, 19:36 | #3 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
Сделайте двойной алфавит (52 символа); при шифровке база смещения = 0 и ключ прибавляется. При обратном действии база = 26 и ключ вычитается. [Что у Вас при дешифрации получится, когда код символа меньше ключа...?]
|
07.11.2011, 19:50 | #4 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 12
|
|
07.11.2011, 19:51 | #5 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
|
|
07.11.2011, 19:55 | #6 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
И лучше бы не "дешифровать", а "расшифровать" ("Расшифрованный текст", кстати). "Дешифровать" - это взломать код, "расшифровать" - применить ключ.
|
07.11.2011, 20:00 | #7 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 12
|
(j-k+26) работает. Только все равно не пойму принципа такого.За помощь большое спасибо.
|
07.11.2011, 20:14 | #8 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Рассмотрите зашифровывание буквы y. Её номер 24, 24+3=27, 27%26=1, alf[1]=b.
Теперь в обратную сторону: b, её номер 1, 1-3=-2. Чему равно (-2)%26 ? В алгебре, остаток от деления -2 на 26 равен 24 или -2, в зависимости от определения "остатка" в случае отрицательного делимого. К сожалению, стандарт C++ не оговаривает, что именно должно получиться при такой операции, то есть, реальный исход будет зависеть от того, что решили авторы данного конкретного компилятора. Если же прибавить 26, у нас всегда будет получаться неотрицательное число (если, конечно, не зададут ключ больше 26). |
30.11.2011, 20:15 | #9 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 12
|
Код:
vguvccpfcvguv. При обратной шифровке получу слово не test and test а, testaandatest. Вместо пробелов будет у меня 2 буквы а. Как мне сделать чтобы вместо а были пробелы ??? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подсчет числа комбинации символов 'ab' во входном потоке символов (Си) | skrappy_kokko | Помощь студентам | 4 | 14.09.2011 23:10 |
Дана последовательность символов (строка). Группу символов, разделенную с одной или обеих сторон пробелам | viper1941 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 14.04.2011 08:46 |
Ошибка в процедуре замены символов. | PAvl | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 03.12.2010 11:47 |
Что делать, если количество символов в билдере не соответствует количеству символов в билде? | BoT_T | Общие вопросы Delphi | 0 | 16.11.2010 10:42 |
верно ли, что среди символов данного текста есть n подряд идущих символов, | Yuliya-Nik | Помощь студентам | 0 | 06.10.2010 23:44 |