Лидеры рейтинга
Мастер-Эксперт
927
Мастер-Эксперт
548
Академик
354
Мастер-Эксперт
312
Профессионал
275
Профессор
73
Профессор
53
8.1.6
02.01.2021
JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1
Создание программ на языках Pascal, Delphi и Lazarus.
Администратор раздела: Зенченко Константин Николаевич (Старший модератор)
|
Перейти к консультации №: |
|
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Помогите зашифровать слово с помощью одиночная перестановка по ключу программа есть но она криво расшифровывает
var st,kl,kk:string; t,tt:array[1..10,1..10] of char; n,m,i,j,k:byte; x:char; begin st:='МАЗУРКЕВИЧ ПЕТР'; kl:='СОБАКА'; kk:=kl; n:=6; m:=length(st)div n ; k:=0; for j:=1 to n do for i:=1 to m do begin inc(k); if st[k]=' ' then st[k]:='_'; t[i,j]:=st[k]; end; for i:=1 to n-1 do for j:=i+1 to n do if kk[i]>kk[j] then begin x:=kk[i]; kk[i]:=kk[j]; kk[j]:=x; for k:=1 to m do begin x:=t[k,i]; t[k,i]:=t[k,j]; t[k,j]:=x; end; end; writeln('Зашифрованное сообщение'); for i:=1 to m do for j:=1 to n do write(t[i,j]); writeln; for i:=1 to n do for j:=1 to n do if kk[j]=kl[i] then for k:=1 to m do tt[k,i]:=t[k,j]; writeln('Расшифрованное сообщение'); k:=0; for j:=1 to n do for i:=1 to m do begin k:=k+1; write(tt[i,j]); end; end.
Состояние: Консультация закрыта
Здравствуйте, JonMoxley!
var st,kl,kk:string; t,tt:array[1..10,1..10] of char; n,m,i,j,k:byte; x:char; begin st:='МАЗУРКЕВИЧ ПЕТР'; writeln(st); kl:='СКАНЕР';//нужно чтобы ключ состоял из разных букв kk:=kl; n:=6; while length(st) mod n<>0 do st:=st+' '; m:=length(st)div n ; k:=0; for j:=1 to n do for i:=1 to m do begin inc(k); // if st[k]=' ' then st[k]:='_'; это лучше убрать //делалось для конкретного случая чтобы видеть "пробел" в начале строки t[i,j]:=st[k]; end; for i:=1 to n-1 do for j:=i+1 to n do if kk[i]>kk[j] then begin x:=kk[i]; kk[i]:=kk[j]; kk[j]:=x; for k:=1 to m do begin x:=t[k,i]; t[k,i]:=t[k,j]; t[k,j]:=x; end; end; writeln('Зашифрованное сообщение'); for i:=1 to m do for j:=1 to n do write(t[i,j]); writeln; for i:=1 to n do for j:=1 to n do if kk[j]=kl[i] then for k:=1 to m do tt[k,i]:=t[k,j]; writeln('Расшифрованное сообщение'); k:=0; kk:=''; //составим расшифрованную строку for j:=1 to n do for i:=1 to m do begin k:=k+1; kk:=kk+tt[i,j]; end; while kk[length(kk)]=' ' do delete(kk,length(kk),1);//уберем добавленные пробелы write(kk) end.
![]() |
Консультировал: puporev (Профессор) Дата отправки: 21.11.2020, 10:53 |
Рейтинг ответа:
+1 Сообщение модераторам Отправлять сообщения |
Посетитель ID: 403446
0
|
это на паскале |
Зенченко Константин Николаевич
Старший модератор ID: 31795
0
|
Цитата: JonMoxley это на паскале pascal 100% ABC, ABC.net либо FREE закоментируйте строчки {//. . . } и будет Вам удача! ===== |
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.