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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2019, 21:22   #1
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию Как можно заменить одним выражением? С помощью mod вроде как можно

Как можно заменить одним выражением? С помощью mod вроде как можно
Код:
for j := 0 to 65 do
                   if s[i] = ru[j] then
                       if j < 33 then
                            s2 := s2 + ru[((j + k) mod 33)]
                          else
                            s2 := s2 + ru[((j + k) mod 33) + 33];
goto ∞ вне форума Ответить с цитированием
Старый 06.08.2019, 22:25   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
((j + k) mod 33) + (j div 33)*33
а зачем?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.08.2019, 22:49   #3
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
((j + k) mod 33) + (j div 33)*33
а зачем?
Уже другой вариант сделал, нашел на форуме алгоритм шифрования Цезаря но неправильно шифрует.
Например если на входе АБВГД то с ключом 1(количество сдвигов) должно выйти БВГДЕ, вместо этого программа выводит яАБВГ. Где ошибка сдвига в алгоритме?

Код:
const
     alp = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' +
    'АБВГДЕЁЖЗИЁКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' + 'abcdefghijklmnopqrstuvwxyz' +
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + '0123456789';

  var
  lalp,k: integer;
  s: string;

 

function Caesar_cipher(str: string; way: boolean; key: integer): string;
var
  s: string;
  i, t: integer;
begin
  if way then key := -key;
  key := key mod lalp;
  if key = 0 then
  begin
    Caesar_cipher := str;
    exit;
  end;
  s := str;
  for i := 1 to length(str) do
  begin
    t := pos(str[i], alp);
    if t <> 0 then
      s[i] := alp[(t - 1 + key + lalp) mod lalp + 1];
  end;
  Caesar_cipher := s;
end;

begin
  lalp := length(alp);
  k := StrToInt(MaskEdit1.Text);
  ObrMemo.Lines.Text := Caesar_cipher(IshMemo.Lines.Text, not(CheckBox.Checked), k);
end;

Последний раз редактировалось goto ∞; 06.08.2019 в 23:08.
goto ∞ вне форума Ответить с цитированием
Старый 06.08.2019, 23:07   #4
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Вроде как нашел ошибку в последней строке
Код:
Caesar_cipher(IshMemo.Lines.Text, not(CheckBox.Checked), k);
нужно заменить на 
Caesar_cipher(IshMemo.Lines.Text, CheckBox.Checked, k);
goto ∞ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем тут можно заменить инк? Олег Олег Помощь студентам 2 28.02.2018 17:14
Как можно заменить inc? УченицаТаня Паскаль, Turbo Pascal, PascalABC.NET 16 21.02.2016 21:10
Можно ли заменить оператор jz на je *Fantom* Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 14.06.2013 02:54
Можно ли сохранить WEB-страницу с переходами к рисунку одним файлом? Vitalik85 HTML и CSS 2 04.07.2012 21:44
Чем можно заменить объект BitBtn? frai Компоненты Delphi 3 14.04.2007 12:42