![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массивы [D7, WinXP]
alec_sey © (2006-05-25 10:14:00)Подскажите где я неправильно делаю. Задача: нужно вводимую строку присвоить массиву затем разбить на двумерный частоколом(т. е чётные вверху не чётные в низу или на оборот)
затем его снова так-же нужно записать в одну строку частоколом. Что бы не разбивать массив а затем собирать
хотел сделать так см. ниже
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Mask, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
SG: TStringGrid;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
XPManifest1: TXPManifest;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
const Digits: array[0..32] of Char = ('à','á','â','ã','ä',
'å','¸','æ','ç','è','é','ê','ë','ì' ,'í','î',
'ï','ð','ñ','ò','ó','ô','õ','ö','÷' ,'ø','ù','ü','ú','ý','û',
'þ','ÿ');// русский алфавит
var
Form1: TForm1;
var i,j,len,p:integer;
S:string;
abc,abcres:array of integer;
k1,k2,k3,k4:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=''; Label2.Caption:='';
MaskEdit2.Text:='';
SetLength(abc,0); SetLength(abcres,0); len:=0; p:=-1;
S:=MaskEdit1.Text;
len:=Length(S);
if len mod 2 = 0 then begin
SetLength(abc,len);
SetLength(abcres,len);
for i:=1 to len do begin
for j:=0 to 32 do
if S[i]=Digits[j] then abc[i-1]:=j;
end;
end else begin
len:=len+1;
SetLength(abc,len);
SetLength(abcres,len);
for i:=1 to len-1 do begin
for j:=0 to 32 do
if S[i]=Digits[j] then begin
abc[i-1]:=j;
abc[len-1]:=0;
end;
end;
end;
k1:=strtoint(SG.Cells[0,0]);
k2:=strtoint(SG.Cells[1,0]);
k3:=strtoint(SG.Cells[0,1]);
k4:=strtoint(SG.Cells[1,1]);
Хотел так получить конечный результат но что то неправильно
{
for i:=0 to len-1 do begin
if i mod 2 = 0 then begin
p:=p+1;
abcres[p]:=k1*abc[i]+k2*abc[i+1];
end;
end;
for i:=0 to len-1 do begin
if i mod 2 0 then begin
p:=p+1;
abcres[p]:=k3*abc[i]+k4*abc[i+1];
end;
end;}
for i:=0 to len-1 do begin
Label1.Caption:=Label1.Caption+IntToStr(abcres[i])+',';
if abcres[i]>32 then begin
while abcres[i]>32 do
abcres[i]:=abcres[i]-33;
end;
for j:=0 to 32 do begin
if abcres[i]=j then
MaskEdit2.Text:=MaskEdit2.Text+Digits[j];
end;
end;
for i:=0 to len-1 do
Label2.Caption:=Label2.Caption+IntToStr(abcres[i])+',';
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
SG.Cells[0,0]:=IntToStr(0);
SG.Cells[1,0]:=IntToStr(10);
SG.Cells[0,1]:=IntToStr(9);
SG.Cells[1,1]:=IntToStr(2);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SetLength(abc,0);
SetLength(abcres,0);
end;
end.
REA (2006-05-25 12:37:00) [1]ну вобщем ты понял...
alec_sey (2006-05-25 10:31:00) [2]Ну вобщем я тут нагородил. Нужно сделать программу шифровки(это с криптографии кажить аффиный шифр если не ошибаюсь)
alec_sey (2006-05-25 10:21:00) [3]А и забыл его после разбиегния нужно ещё умножить на ключ SG затем
только разложить