1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
|
1 | |
Шифрование перестановкой букв30.11.2012, 22:13. Показов 6324. Ответов 14
Метки нет (Все метки)
таблицы простых шифрующих процедур перестановки букв в сообщении. секретом (ключом) здесь служит размер страницы.
например ВЫСТУПАЙТЕ НА РАССВЕТЕ записывали по столбцам в таблицу из 4 строк и 5 столбцов. (см.рис 1) итог ВУТР ВЫПЕ АЕСА НСТТ ЙАСЕ второе задание исходный текст записать по спирали в таблицу. итог ВАРА НЫСЕ ТЕСС ВЕТТ УПАЙ (см рис 2) выглядеть программа должна как на рисунке 3. по виду не сложная я понимаю что мне сейчас просто так никто ничего не решит, мне просто надо понять как ее делать.с чего начинать. подскажите пожалуйста! получается, например в первом случае надо процедурой создать таблицу, поместить в каждую ячейке по букве, потом вывести буквы из каждого столбца сверху вниз. как это все провернуть не представляю. и еще как создать таблицу зная только количество столбцов или строк.
0
|
30.11.2012, 22:13 | |
Ответы с готовыми решениями:
14
Шифрование перестановкой Совпадение букв двух слов.Перестановкой букв Шифрование перестановкой. Матрица из 4 столбцов Шифрование с перестановкой больше 9 символов |
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
||||||||||||||||||||||||||
01.12.2012, 20:36 | 2 | |||||||||||||||||||||||||
Вы уже не первый день программируете, значит форму сделаете сами. Количество другой размерности можете рассчитать по первой размерности и длине текста:
Добавлено через 32 минуты Вот так можно заполнить массив по спирали:
1
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
02.12.2012, 01:52 | 3 |
Вот шифрование при прямом заполнении массива.
Только в вашем примере текст в таблицу занесен без пробелов. Но тогда и расшифрованный текст будет без пробелов. Я делал со всеми знаками и пробелами. Поэтому результат немного отличается, поскольку размерность массива получается другая. Выясните у преподавателя, как правильно.
1
|
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
|
02.12.2012, 02:37 [ТС] | 4 |
спасибо большое! думаю, будет лучше как по примеру. без пробелов, мне кажется так проще или нет? сделайте так проще..а там я выкручусь.
0
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
||||||
02.12.2012, 02:42 | 5 | |||||
Для программирования разницы, практически, нет. Пускай будет с пробелами. Шифрует и расшифрует и код можно предъявить. Если что вставите после занесения исходного текста в переменную s:
1
|
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
||||||
02.12.2012, 14:45 [ТС] | 6 | |||||
теперь я хотела сделать шифрование по спирали, но у меня не вышло((
0
|
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
|
02.12.2012, 16:37 [ТС] | 9 |
а можете скинуть скриншот, у меня текст весь в знаках вопроса?
или просто скажите что за checkbox? вроде так называется..остальное и так понятно что написано там должно быть все разобралась, это пробелы))))) спасибо вам огромное!
0
|
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
|
11.12.2012, 14:13 [ТС] | 10 |
Шифрование.
по столбцам все ясно, по спирали не очень цикл repeat for for for inc(r) как он работает, не могу понять. сначала первый for потом inc(r) потом опять первый?.. зачем в строчке until есть k=m*n. если убрать ее все работает вроде. то есть цикл прекращается по окончанию строки и все. Дешифрование. кучу всего непонятного. зачем 2 части кода по очищению массива, и отмечанию незаполненных частей, эти циклы похожи на запись в массив а не на очищение, так как там есть присвоение Arr[r,i]=s[k] что тогда присваивается там. я правильно понимаю, что Arr[r,i]=s[k] это тоже самое что и Arr[r,i]=Char(1)?? если да, то char(1) это как бы сказать текущий элемент? и дальше идет запись в массив по столбца и чтение по столбцам, а по спирали есть только чтение, почему?
0
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
11.12.2012, 20:38 | 11 |
Заполнение начинается с левого верхнего угла матрицы. Первый цикл заполняет левый столбец вниз. Второй цикл заполняет нижнюю сторону вправо. Третий - правый столбец вверх. Четвёртый - верхнюю сторону влево. Это выглядит так: r=0 144444443 r=1 100000003 1444443 r=2 100000003 1000003 12222 100000003 1222222 122222222 Соответственно рассчитываются начальный и конечный индексы циклов. Добавлено через 20 минут Теперь нам для дешифрации нужно зашифрованный текст вставить по строкам, а считать по столбцам. Чтобы всё правильно считалось - мы должны так же вставить пустые ячейки на те места, где они были при шифровании. Вот для этого при очистке массива для дешифрования определяются пустые ячейки путём заполнения матрицы, как и при шифровании (длина строки то осталась прежней). Только вместо символов строки - заносится код 1. Матрица символьная - значит преобразуем в Char(1). А на места пустых ячеек вставляется Char(0) = 0. Теперь при заполнении матрицы в порядке выборки результирующей строки при шифровании, мы проверяем. Если ячейка содержит код 0 - мы её не заполняем. Практически то же касается и заполнения спиралью. Только вместо Char(1) я вставил s[k] - символ из строки. Можно тоже заменить на Char(1). Добавлено через 8 минут При дешифровании - обратный вариант. Записываем по строкам - читаем в соответствии с методом - либо по столбцам, либо по спирали.
0
|
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
|
|
16.12.2012, 15:33 [ТС] | 12 |
я извиняюсь конечно за назойливость, но сколько не смотрела на эти цифры не поняла их значения.
вот на рисунке 1. я правильно изобразила то как заполняются клетки? сначала красный прямоугольник потом рыжий? на рис 2..тогда как заполняются углы, они же принадлежат 2ум сторонам прямоугольника? они дублируются что ли?
0
|
Заблокирован
|
|
16.12.2012, 16:42 | 13 |
Ну я бы написал одну универсальную функцию с одним циклом. Она бы шифровала и расшифоровывала любым способом, начиная с любого угла прямоугольника, поскольку не все фразы уместятся в квадрат, с любым кручением, левым или правым. По семофорам. A в качестве отправной точки, лепил, к строке в качестве идентификатора букву.
А что касается пробелов. Чтоб утереть нос преподу, то сделал бы возможность удалять их их их фразы, вместе со знаками препинания. Да, и таблица совсем не нужна. Здесь нужен двумерный динамический массив.
0
|
0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 12
|
|
19.01.2016, 23:41 | 15 |
Простите, что прошу...Но мне понравился Ваш шифратор! И мне интересно узнать как можно было бы сделать так, чтобы:
- Выделенная часть отображалась как в нарисованной мной таблице (тоесть меняются местами 2 и 3 столбец) - Чтобы вводимый текст не изменялся в строке расшифровки (тоесть: вводим 1111222233334444, получаем 1234123412341234 и последнее не изменяется в расшифрованной строке при изменении столбцов в таблице) Если Вы всё же захотите помочь, не могли бы Вы, указать где именно Вы изменяли код для этого? Интересно знать как работает Ваша программа, спасибо!
0
|
19.01.2016, 23:41 | |
19.01.2016, 23:41 | |
Помогаю со студенческими работами здесь
15
Нахождение анаграмм в заданном словаре(анаграммы-слова, полученные перестановкой букв, например, корвет-вектор, сорт-рост и т. д.) Шифрование текста методом замены букв Создать программу шифровки/дешифровки (шифрование перестановкой) Шифрование перестановкой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |