Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.11.2019, 13:01   #1
__ka
 
Регистрация: 07.11.2019
Сообщений: 4
По умолчанию Прокомментировать программу

Пытаюсь разобраться в программе, не очень понимаю, что она делает (именно пошагово), и можно ли её переделать на русский алфавит?

Код:
begin
  var a := Range(10, 99).ToArray.Shuffle;
  var Encrypt := new Dictionary<string, Queue<integer>>;
  var Decrypt := new Dictionary<integer, string>;
  for var i := 0 to 25 do
  begin
    var ch := Chr(i + 97);
    var q := new Queue<integer>;
    q.Enqueue(a[3 * i]);
    q.Enqueue(a[3 * i + 1]);
    q.Enqueue(a[3 * i + 2]);
    Encrypt.Add(ch, q);
    Decrypt.Add(a[3 * i], ch);
    Decrypt.Add(a[3 * i + 1], ch);
    Decrypt.Add(a[3 * i + 2], ch);
  end;
  
  Encrypt.Println;
  Println;
  Decrypt.Println;
  Println;
  
  var s := ReadString('Enter the string:');
  var Res := '';
  
  foreach var ch in s do
  begin
    var p := Encrypt[ch].Peek;
    Res += p;
    Encrypt[ch].Dequeue;
    Encrypt[ch].Enqueue(p);
  end;
  Print('Encrypted:');
  Res.Println;
  
  Print('Decrypted:');
  for var i := 0 to Res.Length div 2 - 1 do
    Decrypt[res.Substring(2 * i, 2).ToInteger].Print('')
end.

Последний раз редактировалось BDA; 11.11.2019 в 16:52.
__ka вне форума   Ответить с цитированием
Старый 10.11.2019, 13:25   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,047
По умолчанию

Цитата:
Сообщение от __ka Посмотреть сообщение
что она делает (именно пошагово)
Ну так закиньте в переводчик, если простый англю слова вызывают проблемы.

Цитата:
Сообщение от __ka Посмотреть сообщение
и можно ли её переделать на русский алфавит?
Переделывайте. На англ. тут мало что завязано.
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 11.11.2019, 15:41   #3
__ka
 
Регистрация: 07.11.2019
Сообщений: 4
По умолчанию

Доделал программу, но выдаёт ошибки при русском алфавите. Помогите исправить, пожалуйста

Код:
begin
  var language: integer;
  writeln ('Выберите язык: 1-русский, 2-английский');
  readln(language);
  if language=1 then  
                begin
                var a := Range(10, 99).ToArray.Shuffle;
                var Encrypt := new Dictionary<string, Queue<integer>>;
                var Decrypt := new Dictionary<integer, string>; //автоопределение типа в случае обобщенных типов
                for var i := 0 to 33 do
                     begin
                     var ch := ChrAnsi(i + 224);
                     var q := new Queue<integer>;
                     q.Enqueue(a[3*i]);
                     q.Enqueue(a[3*i + 1]);
                     q.Enqueue(a[3*i + 2]);
                     Encrypt.Add(ch, q);
                     Decrypt.Add(a[3*i], ch);
                     Decrypt.Add(a[3*i + 1], ch);
                     Decrypt.Add(a[3*i + 2], ch);
                     end;
  
              Encrypt.Println;
              Println;
              Decrypt.Println;
              Println;
  
              var s := ReadString('Введите текст:');
              var Res := '';
  
               foreach var ch in s do
                      begin
                      var p := Encrypt[ch].Peek;
                      Res += p;
                      Encrypt[ch].Dequeue;
                      Encrypt[ch].Enqueue(p);
                      end;
             Print('Зашифрованный текст:');
             Res.Println;
  
             Print('Дешифрованный текст:');
             for var i := 0 to Res.Length div 2 - 1 do
             Decrypt[res.Substring(2 * i, 2).ToInteger].Print('');
             end
else
  begin
  var a := Range(10, 99).ToArray.Shuffle;
  var Encrypt := new Dictionary<string, Queue<integer>>;
  var Decrypt := new Dictionary<integer, string>; //автоопределение типа в случае обобщенных типов
  for var i := 0 to 25 do
  begin
    var ch := ChrAnsi(i + 97);
    var q := new Queue<integer>;
    q.Enqueue(a[3 * i]);
    q.Enqueue(a[3 * i + 1]);
    q.Enqueue(a[3 * i + 2]);
    Encrypt.Add(ch, q);
    Decrypt.Add(a[3 * i], ch);
    Decrypt.Add(a[3 * i + 1], ch);
    Decrypt.Add(a[3 * i + 2], ch);
  end;
  
  Encrypt.Println;
  Println;
  Decrypt.Println;
  Println;
  
  var s := ReadString('Введите текст:');
  var Res := '';
  
  foreach var ch in s do
  begin
    var p := Encrypt[ch].Peek;
    Res += p;
    Encrypt[ch].Dequeue;
    Encrypt[ch].Enqueue(p);
  end;
  Print('Зашифрованный текст:');
  Res.Println;
  
  Print('Дешифрованный текст:');
  for var i := 0 to Res.Length div 2 - 1 do
    Decrypt[res.Substring(2 * i, 2).ToInteger].Print('');
end; 
end.
__ka вне форума   Ответить с цитированием
Старый 11.11.2019, 16:49   #4
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 5,425
По умолчанию

1) 90 чисел (от 10 до 99) не хватит по три числа на каждую букву русского алфавита.
2)
Код:
i := 0 to 33
Это 34 значения, а букв всего 33. При этом в кодировке Windows-1251 только 32 буквы идут подряд, начиная с кода 224, а "ё" лежит отдельно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокомментировать код в С++ Builder Катерина Битюкова C++ Builder 0 13.12.2015 21:28
C++Проверить код и прокомментировать Kseni564 Помощь студентам 0 11.05.2014 16:02
нужно прокомментировать код Господин Никто Помощь студентам 6 09.06.2013 14:08
Прокомментировать код программы lolbox C# (си шарп) 0 24.03.2013 10:11
Нужно прокомментировать небольшую программу trum Помощь студентам 0 07.06.2012 19:29


05:37.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.