Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.049 c
15-1147718818
learner
2006-05-15 22:46
2006.06.11
Win XP SP2 странно работает FireWall ( стандартный от XP )


15-1147688857
07BB
2006-05-15 14:27
2006.06.11
XML+Java


2-1148281767
deltav1
2006-05-22 11:09
2006.06.11
параллелизм


15-1147796075
DillerXX
2006-05-16 20:14
2006.06.11
Лого из Delphi 4


2-1148620878
kaginava
2006-05-26 09:21
2006.06.11
Запуск программы из сервиса