Текущий архив: 2006.06.11;
Скачать: CL | DM;
Вниз
Массивы Найти похожие ветки
← →
alec_sey (2006-05-25 10:14) [0]Подскажите где я неправильно делаю. Задача: нужно вводимую строку присвоить массиву затем разбить на двумерный частоколом(т. е чётные вверху не чётные в низу или на оборот)
затем его снова так-же нужно записать в одну строку частоколом. Что бы не разбивать массив а затем собирать
хотел сделать так см. ниже
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.
← →
alec_sey (2006-05-25 10:21) [1]А и забыл его после разбиегния нужно ещё умножить на ключ SG затем
только разложить
← →
alec_sey (2006-05-25 10:31) [2]Ну вобщем я тут нагородил. Нужно сделать программу шифровки(это с криптографии кажить аффиный шифр если не ошибаюсь)
← →
REA (2006-05-25 12:37) [3]ну вобщем ты понял...
Страницы: 1 вся ветка
Текущий архив: 2006.06.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c