HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 17.03.2010, 17:22
Soherox
Познающий
Регистрация: 17.02.2010
Сообщений: 45
С нами: 8542140

Репутация: 47
По умолчанию

superboy4..покопался в твоем коде, честно, не особо понял что там написано написал с нуля, вот код, прокоментил все, чтобы было понятно, если что-то все равно не понятно, спрашивай

Код:
unit Enciphering;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  n = 1000; // длина строки
  dif  = 224; // разница между символами в ASCII
var
  Form1: TForm1;
  key, tex: string;
  tqu, kqu: integer;
  rez: string;
  tx: set of 'а'..'я';
  tnum, knum, code: array [1..n] of integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  var
    i: integer;
begin
  tex:=Edit1.Text; // Для текста
  key:=Edit2.Text; // Для ключа
  rez:=''; // Наш ответ
  tqu:=length(tex); // Длина текста
  kqu:=length(key); // Длина ключа
  for i:=1 to length(tex) do tnum[i]:=-1; // Исключение инородных сиволов
  for i:=1 to length(tex) do knum[i]:=0; // Обнуление
  code:=knum;
  for i:=1 to tqu do
    if tex[i] in tx then tnum[i]:=ord(tex[i]) - dif; // Нахождение порядкового номера в алфавите (отсчет от 0 до 30)
  for i:=1 to kqu do
    knum[i]:=ord(key[i]) - dif;
  for i:=kqu + 1 to tqu  do
    knum[i]:=knum[i - kqu]; // Дополнение ключа в случае если его длина меньше длины строки
  for i:=1 to tqu do
    if tnum[i]<> -1 then code[i]:=(tnum[i] + knum[i]) mod 32  
    else code[i]:=ord(' ')-dif; // Само шифрование
  for i:=1 to tqu do
    rez:= rez + chr(code[i] + dif); // Получение ответа
  stringgrid1.ColCount:=tqu+1; 
  for i:=1 to tqu do
    StringGrid1.Cells[i, 0]:=tex[i]; 
  for i:=1 to tqu do
    StringGrid1.Cells[i, 1]:=rez[i]; // Вывод ответа
end;

end.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...