Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.10.2016, 14:17   #1 (permalink)
Smile188
Member
 
Регистрация: 13.10.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа не работает, исправьте пожалуйста. Паскаль

вот само условие :
Можно использовать и усложненную перестановку. Для
этого открытый текст записывается в матрицу по определенному ключу k1,
определяющему порядок записи открытого текста в строки матрицы при
шифровании. Шифртекст образуется при считывании из этой матрицы по
ключу k2, определяющему, в каком порядке записывается информация из
столбцов матрицы. Для реализации такого варианта перестановки можно не использовать непосредственно матрицу, а осуществлять перерасчет коэф- фициентов.
aacuiyiiue.jpg

Код:
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.
Smile188 вне форума   Ответить с цитированием

Старый 15.10.2016, 14:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблема встречалась и ранее, вот, что нашлось

Не работает программа, как исправить? Паскаль
Помогите пожалуйста, очень трудная программа, Паскаль
Программа на Паскаль
Паскаль. Исправьте, пожалуйста
Исправьте, пожалуйста, программу

Старый 15.10.2016, 22:13   #2 (permalink)
Smile188
Member
 
Регистрация: 13.10.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

+ в программу мы сами должны вводить кол-во строк и столбцов
Smile188 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:39.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.