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

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

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

> Шифровальный квадрат, Шифровка и дешифровка текста
сообщение
Сообщение #1


Гость






Помогите со след. задачей.
Дана след. матрица:
(0, 1, 0, 1, 0, 0, 1, 0)
(0, 0, 0, 0, 1, 0, 0, 0)
(1, 0, 1, 0, 0, 0, 1, 0)
(0, 0, 0, 1, 0, 0, 0, 0)
(0, 1, 0, 0, 0, 1, 0, 0)
(1, 0, 0, 0, 1, 0, 0, 0)
(0, 0, 1, 0, 0, 0, 1, 0)
(0, 0, 0, 1, 0, 0, 0, 1)
Вводится строка. Просматривается шифр. квадрат, если его элемент равен 1, то в новую символьную матрицу 8x8 на пересечении i-ого строки и j-ого столбца, т.е. там, где была 1 в шифр. квадрате, ставится текущий символ строки. Если шифр. кв. закончился, а строка нет, то шифр. кв. поворачивается вправо на 90 градусов и начинается просмотр нового шифр. кв. Процесс происходит пока не закончится строка. В рез-те мы получили симв. матрицу с зашифрованным текстом.
Стока длиной не более 64 символов.
Программу написал, но работет она неправильно, помогите найти ошибку или какой-нибудь др. метод решения. Заранее благодарю.
Вот код программы:
Код

uses
 Crt;
type
 Mass = array [1..8, 1..8] of 0..1;
var
 S, S1 : String;
 NewM : array [1..8, 1..8] of Char; {Матрица с зашифрованным текстом}
 P, I, J : Word;
 Bool : Boolean;
const
 Matr : Mass = ((0, 1, 0, 1, 0, 0, 1, 0),
                       (0, 0, 0, 0, 1, 0, 0, 0),
                       (1, 0, 1, 0, 0, 0, 1, 0),
                       (0, 0, 0, 1, 0, 0, 0, 0),
                       (0, 1, 0, 0, 0, 1, 0, 0),
                       (1, 0, 0, 0, 1, 0, 0, 0),
                       (0, 0, 1, 0, 0, 0, 1, 0),
                       (0, 0, 0, 1, 0, 0, 0, 1));

procedure ReadData;
var
 F : Text;
begin
 Assign(F, 'Text.txt');
 Reset(F);
 ReadLn(F, S);
 Close(F)
end;

procedure Povorot(var A : Mass);
var
 B : Mass;                          {Поворот матрицы A на 90 градусов}
 I, J : Word;
begin
 for I := 1 to 8 do
   for J := 1 to 8 do B[I, J] := 0;
 for I := 1 to 8 do
   for J := 1 to 8 do B[I, 9 - J] := A[J, I];
 for I := 1 to 8 do
   for J := 1 to 8 do A[I, J] := B[I, J];
end;

begin
 ClrScr;
 ReadData;
 for I := 1 to 8 do
   for J := 1 to 8 do NewM[I, J] := ' ';
 P := 1; Bool := True;
 while P <= Length(S) do
   begin
      I := 1; J := 1;
      while (I <= 8) and (Bool) do
         begin
            while J <= 8 do
               begin
                  if Matr[I, J] = 1
                  then
                     begin
                       NewM[I, J] := S[P];
                       Inc(P);
                       if P > Length(S)
                       then
                          begin
                            Break;
                            Bool := False
                          end;
                     end;
                  Inc(J)
               end;{Конец цикла с J}
            Inc(I);
            J := 1;
         end;{Конец цикла с I}
      if (P = 17) or (P = 33) or (P = 49)
      then Povorot(Matr)
   end;
 S1 := '';
 for I := 1 to 8 do
   for J := 1 to 8 do S1 := S1 + NewM[I, J];
 I := Length(S1);
 while S1[I] = ' ' do
   begin
     Delete(S1, I, 1);
     Dec(I)
   end;
 Write(S1);
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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