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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2015, 18:48   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Как сделать чтобы сохраняло пробелы?

Есть некоторая процедура,которая отвечает за Криптосистему цезаря.
Так вот если раздельное слово написать,оно расшифрует,а если с пробелами то не расшифровывает.

Не могу понять что убрать в условии.

Код:
const alphabet:array[0..65] of char = ('À','Á','Â','Ã','Ä','Å','¨','Æ','Ç','È','É',
'Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø',
'Ù','Ú','Û','Ü','Ý','Þ','ß', 
'à','á','â','ã','ä','å','¸','æ','ç','è','é','ê','ë','ì','í',
'î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û', 
'ü','ý','þ','ÿ');

var
  Form1: TForm1;
  b:array[0..65] of char;
  i, j, k: byte;
  s, s2:string;

procedure TForm1.BitBtnClick(Sender: TObject);
begin
  For i:=0 to 65 do
  begin                        
   b[i]:= alphabet[(i+1) mod 66];
  end;

  if CheckBox.Checked = false then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
    begin
      for j := 0 to 65 do
if  s[i] = b[j] then
 s2 := s2+b[(j+(k-1)) mod 66]
 else
 if s[i] <> b[j] then s2 := s2+b[(j+(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;

  if CheckBox.Checked = true then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
      for j := 0 to 65 do
        if s[i] = b[j] then s2 := s2+b[(j-(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;

end;

Последний раз редактировалось Stilet; 08.11.2015 в 19:06.
Otar4ik вне форума Ответить с цитированием
Старый 08.11.2015, 19:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что за проблема пропускать пробелы?
Код:
 if CheckBox.Checked = false then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
    begin
      for j := 0 to 65 do
           if s[i]=' ' then s2:=s2+s[i] else
            if  s[i] = b[j] then s2 := s2+b[(j+(k-1)) mod 66]
            else if s[i] <> b[j] then s2 := s2+b[(j+(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;

  if CheckBox.Checked = true then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
      for j := 0 to 65 do
        if s[i]=' ' then s2:=s2+s[i] else
         if s[i] = b[j] then s2 := s2+b[(j-(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2015, 19:35   #3
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что за проблема пропускать пробелы?
Код:
 if CheckBox.Checked = false then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
    begin
      for j := 0 to 65 do
           if s[i]=' ' then s2:=s2+s[i] else
            if  s[i] = b[j] then s2 := s2+b[(j+(k-1)) mod 66]
            else if s[i] <> b[j] then s2 := s2+b[(j+(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;

  if CheckBox.Checked = true then begin
    k := StrToInt(MaskEdit1.Text);
    s := IshMemo.Lines.Text;
    for i := 1 to length(s) do
      for j := 0 to 65 do
        if s[i]=' ' then s2:=s2+s[i] else
         if s[i] = b[j] then s2 := s2+b[(j-(k-1)) mod 66];
    ObrMemo.Lines.Text := s2;
    s2 := '';
  end;
Декодирует но не кодирует
отображает вот что при кодировании
Изображения
Тип файла: jpg Безымянный33333.jpg (54.4 Кб, 9 просмотров)
Otar4ik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать так,чтобы он левой рукой до стены коснулся? и если можно чтобы двери лифта закрылись maxon56 Паскаль, Turbo Pascal, PascalABC.NET 0 07.06.2011 18:46
Чем заменить пробелы чтобы командная строка их приняла? Crystallon Общие вопросы Delphi 3 27.01.2011 03:01
Как сделать чтобы одна ячейка таблицы содержала такой же текст как другая? 3мей Microsoft Office Word 2 15.01.2011 22:55
pascal, строки. Как сделать, чтоб считались пробелы? AlexGur Помощь студентам 1 27.01.2009 08:28