![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток, господа!
Такая проблемка нужно реализовать 2 метода сортировки чтоб результаты выводились в стрнггрид а в лейблы выводилсь количество перестановок для сровнения. Я зделал генерацию и открытие файла содержащего масив а с сортировкой проблемка, подскажите пожалуйста. Виснет после нажатия кнопки метода включением. ![]() Код:
unit Grishman1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Label1: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label2: TLabel; Label3: TLabel; StringGrid2: TStringGrid; Bevel1: TBevel; Label4: TLabel; StringGrid3: TStringGrid; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Button5: TButton; procedure Button5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure vkluch(var a: array of integer;n:integer); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const n=1000; var Form1: TForm1; f:textfile; a:array[1..n] of integer; i:integer; S:string; implementation {$R *.dfm} procedure tform1.vkluch(var a: array of integer;n:integer); var j,i,cv,mv:integer; f:textfile; B: array [0..10000] of integer; begin if OpenDialog1.Execute then begin assignfile(f,opendialog1.FileName); reset(f); i:=1; while not eof(f) do begin for i:=0 to n do begin j:=i; cv:=0; mv:=0; while (j>1) and (B[j-1]>A[i]) do begin B[j]:=B[j-1]; j:=j-1; end; B[j]:=A[i]; end; for i:=0 to N do begin A[i]:=b[i]; stringgrid2.cells[i,0]:=inttostr(a[i]); end; end; end; end; procedure TForm1.Button5Click(Sender: TObject); begin stringgrid1.colcount:=n+1; if savedialog1.execute then begin assignfile(f,savedialog1.filename); rewrite(f); randomize; for i:=1 to n do begin a[i]:=random(1000)-500; writeln(f,a[i]); end; end; closefile(f); end; procedure TForm1.Button1Click(Sender: TObject); begin stringgrid1.colcount:=n+1; stringgrid1.rowcount:=0; if opendialog1.Execute then begin assignfile(f,opendialog1.FileName); for i:=1 to n do begin stringgrid1.cells[i,0]:=inttostr(a[i]); reset(f); end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin stringgrid2.colcount:=n+1; stringgrid2.rowcount:=0; vkluch(a,n); end; end. Изначально код был другим (процедура включ) но все равно не работало Обясните пожалуйста как реализовать ети методы в интернете куча примеров но я немогу понять как оно работает ![]() |