|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
15.10.2016, 14:17 | #1 (permalink) |
Member
Регистрация: 13.10.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программа не работает, исправьте пожалуйста. Паскаль
Можно использовать и усложненную перестановку. Для этого открытый текст записывается в матрицу по определенному ключу k1, определяющему порядок записи открытого текста в строки матрицы при шифровании. Шифртекст образуется при считывании из этой матрицы по ключу k2, определяющему, в каком порядке записывается информация из столбцов матрицы. Для реализации такого варианта перестановки можно не использовать непосредственно матрицу, а осуществлять перерасчет коэф- фициентов. Код:
Var q,k: integer; SS: Array[1..k] of String; Text,Text_1,Text_2,Text_3,S: String; Textmatr: Array[1..q,1..k] of Char; i,j,kolsimvolov,code: integer; key1: array[1..q] of Byte; key2: array[1..k] of Byte; p,m: Boolean; Begin SetConsoleCP(1251); SetConsoleOutputCP(1251); //------------------------------------------------------------- write ('Введите количество строк в матрице: '); readln (q); write ('Введите количество столбцов вматрице: '); readln (k); repeat Write('Введи текст для кодировки: '); Readln(Text); kolsimvolov:=Length(text); m:=True; if kolsimvolov>q*k then m:=False; if not(m) then writeln('количество символов не должно превышать ', q*k); until m; //------------------------------------------------------------- If kolsimvolov< q*k then //если кол-во символов текста не кратно кол-ву символов в блоке дополняем его пробелами repeat text:=text+' '; Inc(kolsimvolov); until kolsimvolov=q*k; //------------------------------------------------------------ Repeat Write('Введите ключ1 ', q,' цифр(ы) без пробелов): '); Readln(S); for i:=1 to q do Val(S[i],key1[i],Code); p:=true; for i:=1 to 5 do for j:=i+1 to 6 do if (key1[i]=key1[j]) then p:=false; If Not(p) then writeln('Все цифры должны быть различными!'); Until p; //------------------------------------------------------------- Repeat Write('Введите ключ2 ', k, ' цифр(ы) без пробелов): '); Readln(S); for i:=1 to k do Val(S[i],key2[i],Code); p:=true; for i:=1 to k-1 do for j:=i+1 to k do if (key2[i]=key2[j]) then p:=false; If Not(p) then writeln('Все цифры должны быть различными!'); Until p; Writeln; //------------------------------------------------------ For i:=1 to q do For j:=1 to k do Textmatr[key1[i],j]:=Text[(i-1)*k+j]; Writeln(' k1\k2 1 2 3 4'); For i:=1 to q do begin Write(' ',i,' '); For j:=1 to k do write(' ',textmatr[i,j],' '); Writeln; end; //------------------------------------------------------ Text_1:=''; For j:=1 to k do for i:=1 to q do begin S:=textmatr[i,key2[j]]; Text_1:=Text_1+S; end; Writeln('Закодированный текст: ',text_1); //------------------------------------------------------- Text_2:=''; For j:=1 to k do SS[key2[j]]:=Copy(Text_1,(j-1)*q+1,q); For j:=1 to 4 do Text_2:=Text_2+SS[j]; //------------------------------------------------------- Text_3:=''; For i:=1 to q do For j:=1 to k do begin S:=Copy(Text_2,(j-1)*q+key1[i],1); Text_3:=Text_3+S; end; Writeln('Раскодированный текст: ',Text_3); //------------------------------------------------------- writeln ('Нажмите "Enter" для завершения.'); Readln End. |
15.10.2016, 14:17 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Проблема встречалась и ранее, вот, что нашлось Не работает программа, как исправить? Паскаль Помогите пожалуйста, очень трудная программа, Паскаль Программа на Паскаль Паскаль. Исправьте, пожалуйста Исправьте, пожалуйста, программу |
15.10.2016, 22:13 | #2 (permalink) |
Member
Регистрация: 13.10.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
+ в программу мы сами должны вводить кол-во строк и столбцов
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|