Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2013, 00:33   #1
Megapol
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 29
По умолчанию задача

Зафиксируем натуральное k и перестановку чисел 1,… k (ее можно задать с помощью последовательности натуральных чисел p1,… pk, в которую входит каждое из чисел 1,… k). При шифровке в исходном тексте к каждой из последовательных групп по k символов применяется зафиксированная перестановка. Пусть k=4 и перестановка есть 3, 2, 4, 1. Тогда группа символов s1,s2,s3,s4 заменяется на s3, s2, s4, s1. Если в последней группе меньше четырех символов, то к ней добавляются пробелы. Пользуясь изложенным способом:
А) зашифровать данный текст
Б) расшифровать данный текст

Код:
  Uses Crt;

       Const
         k = 4;

       Var
         A { шифр }
         : array [1..k] of integer;

         i, j { переменные цикла }
         : integer;

         param { параметр запуска программы }
         : string;

         B { группа символов }
         : string [k];

         f, { считываемый файл }
         f2 { зашифрованный выходной файл }
         : text;

       Procedure code (
                        path { имя файла }
                        : string;

                        A { шифр - массив из 4-х элементов
                            в процедуре нумерация будет с
                            0 до k - 1 }
                        : array of integer
                      );
       {
         Шифрует
       }
       begin
         Assign (f, path);
         Assign (f2, 'code.txt');
         Rewrite (f2);
         Reset (f);
         i := 0;
         while not Eof (f) do
           begin
             Inc (i);
             Read (f, B [i]);
             if (i = k)
               then
                 begin
                   for i := 0 to k - 1 do
                     Write (f2, B [A [i]]);
                   i := 0;
                 end;
           end;
         if (i < k)
             and
            (i > 0)
           then
             begin
                for i := i + 1 to k do
                  B [i] := ' ';

                for i := 0 to k - 1 do
                  Write (f2, B [A [i]]);
             end;
         Close (f);
         Close (f2);
       end;

       Procedure unCode (
                          path { имя файла }
                          : string;

                          A { шифр - массив из 4-х элементов
                              в процедуре нумерация будет с 0
                              до k - 1 }
                          : array of integer
                        );
       {
         Расшифровывает
       }
       var
         C { расшифрованная группа }
         : string [k];

       begin
         Assign (f, path);
         Assign (f2, 'decode.txt');
         Rewrite (f2);
         Reset (f);
         i := 0;
         while not Eof (f) do
           begin
             Inc (i);
             Read (f, B [i]);
             if (i = k)
               then
                 begin
                   for i := 0 to k - 1 do
                     C [A [i]] := B [i + 1];
                   for i := 1 to k do
                     Write (f2, C [i]);
                   i := 0;
                 end;
           end;
         Close (f);
         Close (f2);
       end;

       Begin
         ClrScr;

         param := ParamStr (1);
         for i := 1 to Length (param) do
           param [i] := UpCase (param [i]);
         if (param = 'DECODE')
             or
            (param = 'CODE')
           then
             begin
               Writeln ('Введите ', k, ' цифр от 1 до ', k, ': ');
               for i := 1 to 4 do
                 Readln (A [i]);
             end;
         if (param = 'DECODE')
           then
             for j := 2 to ParamCount do
               UnCode (ParamStr (j), A)
           else
             if (param = 'CODE')
               then
                 begin
                   for j := 2 to ParamCount do
                     Code (ParamStr (j), A);
                 end
               else
                 begin
                   Writeln ('Example: Sh {param} path1 [path2]...[pathn]');
                   Writeln ('param: code or decode');
                   Writeln ('code - зашифровать файл(файлы)');
                   Writeln ('decode - расшифровать файл(файлы)');
                 end;

         Readln;
       End.
не работает. что не так?

Последний раз редактировалось Stilet; 09.05.2013 в 18:34.
Megapol вне форума Ответить с цитированием
Старый 09.05.2013, 01:44   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Вы создали 6 тем, которые называются "Задача". Считаете нормальным, если вообще все будут так темы называть?
Arigato вне форума Ответить с цитированием
Старый 09.05.2013, 10:10   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Рекомендация: удалить все темы кроме одной как повторы.
s-andriano вне форума Ответить с цитированием
Старый 09.05.2013, 11:27   #4
Megapol
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 29
По умолчанию

если заново создать , но тему поменять так можно?
Megapol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на зачёт. проблема Задача на нобелевскую премию! Sabotage5 Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2013 15:18
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51