
07.06.2010, 23:45
|
Прохожий
|
|
Регистрация: 07.06.2010
Сообщения: 6
Репутация: 10
|
|
Особая сортировка нечетных чисел в стрингриде
Просто вручную или рандомно вводятся числа. по клику(если вручную вводим) нечетные числа должны быстренько свалить в стрингрид 2 , но в первом четные должны дружнеько без пробелов восстановиться
обязательно использовать два стрингрида!(((((
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Grids ;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n,k,i:Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
n:=3;
Edit1.Text:=IntToStr(n);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var a,b : Array of Char; //преобразование массива
k,i : Integer;
begin
SetLength(a,n);
SetLength(b,n); //и результирующий b массивы
For k:=0 to n-1 Do //считывание значений массива а
a[k]:=StringGrid1.Cells[k,0][1]; //из StringGrid1
i:=0;
For k:=0 To n-1 do
if a[k] in ['0'..'9'] Then Begin
b[i]:=a[k];
Inc(i);
End;
For k:=0 To n-1 Do
if Not(a[k] in ['0'..'9']) Then Begin // тут сортирую нечетных
if a[k] mod 2 <> 0 then k:= k+1;
b[i]:=a[k];
Inc(i);
End;
For k:=0 To n-1 Do //вывод массива b в StringGrid2
StringGrid2.Cells[k,0]:=b[k];
a:=Nil; b:=Nil; //освобождение памяти
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if StringGrid1.Cells[0,0]='' then
for i:=0 to n do
StringGrid1.Cells[i,0]:=inttostr(random(100));
end;
end.
|