IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Шифрование
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский

Репутация: -  0  +


Шифрование методом Виженера. Программа работает.
Program shifr; 
var
kl,sh:string;
th: array[1..255] of Char;
ch,dh,ah:array[1..255] of integer;
l,l2,i:integer;
begin
writeln('Input key:');
readln(kl);
writeln('Input word:');
readln(sh);
l:=Length(kl);
l2:=Length(sh);
while l<l2 do
begin
l:=Length(kl);
l2:=Length(sh);
kl:=kl+kl;
end;

for i:=1 to Length(kl) do
ch[i] := ord(kl[i]) - ord('a');
for i:=1 to Length(sh) do
dh[i]:=ord(sh[i]) - ord('a');
for i:=1 to Length(sh) do
ah[i] := (ch[i] + dh[i]) mod 26;
for i:=1 to Length(sh) do
th[i]:= chr (ah[i] + ord('a'));
writeln('shifr text: ');
writeln(th)
end.

Можете мне объяснить, почему зашифрованный текст выводится таким образом с [ и через запятые?
Input key:
sf
Input word:
or
shifr text:
[g,w,
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Попробуйте на листе бумаги выполнить шифрование. Тогда смысл каждого из циклов станет понятнее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский

Репутация: -  0  +


Цитата(Федосеев Павел @ 18.10.2016 19:50) *

Попробуйте на листе бумаги выполнить шифрование. Тогда смысл каждого из циклов станет понятнее.

Пробовала, все равно не понимаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Большевик–концептуал
***

Группа: Пользователи
Сообщений: 194
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: bu_gen@octagram.name
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Во-первых, в конце выводится th, который суть array[1 .. 255] of Char, и длина его номинально 255, а с учётом того, что нулевые байты для совместимости с C сигнализируют о конце строки, может и меньше, но это всё равно кислая схема. Надо либо через for выводить по символу, либо сделать th строкой и в последнем for дописывать символы конкатенацией th := th + Chr(…);. Других явных проблем не наблюдаю.

Добавлено через 3 мин.
И ещё в while l:=Length(kl); лучше делать после конкатенации, а не до.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский

Репутация: -  0  +


Цитата(OCTAGRAM @ 18.10.2016 22:47) *

Во-первых, в конце выводится th, который суть array[1 .. 255] of Char, и длина его номинально 255, а с учётом того, что нулевые байты для совместимости с C сигнализируют о конце строки, может и меньше, но это всё равно кислая схема. Надо либо через for выводить по символу, либо сделать th строкой и в последнем for дописывать символы конкатенацией th := th + Chr(…);. Других явных проблем не наблюдаю.

Добавлено через 3 мин.
И ещё в while l:=Length(kl); лучше делать после конкатенации, а не до.


Спасибо большое, помогли.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Я, грешным делом, понял, что топикстартер приобрёл код и хочет его осознать, а не то, что вывод программы не равен эталонному или ожидаемому.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 13:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name