По условию задачи надо отсортировать одномерный массив, заданный случайным образом (n=100), а затем исходную и полученную матрицу вывести на форму (процесс сортировки выводится на экран пошагово). Очень надеюсь на вашу помощь. Подскажите, как, с чего следует начинать.. какой элемент я должна использовать для ввода массива? Заранее большое спасибо!
var Form1: TForm1; a:array[0..99] of integer; //чтобы нумерация совпала со стринггридовской. и чтобы не вводить 100 чисел! i:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin for i:=0 to 99 do //меняем счетчики begin //не забывай про бегин/энд! a[i]:=random(i); //a[i]:=StrToInt(StringGrid1.Cells[i,0]); это не нужно - ты же заполнила массив рэндомом! // А вот вывод пригодился бы. Допишем. StringGrid1.Cells[i,0]:=IntToStr(a[i]); end; end;
//если ввод рэндомом - это вообще не нужно. тем более что ввод в стринггрид у тебя заблокирован. procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin case key of #8,'0'..'9':; #13: if StringGrid1.Col<StringGrid1.ColCount-1 then StringGrid1.Col:=StringGrid1.Col+1; else key:=chr(0); end; end;
procedure TForm1.Button3Click(Sender: TObject); const size=100; var //a:array[1..size] of integer; это еще что такое? // у нас есть глобальная переменная с тем же именем. вот с ней и работаем, раз объявили. j,buf,i,k:integer;
begin //for i:=1 to size do //a[i]:=StrToInt(StringGrid1.Cells[i-1,0]) ; уже все давно заполнено. не повторяемся. //стандартная пузырьковая сортировка. что ты делала - не поняла... for i:=0 to size-1 do //с нуля for j:=0 to size-2 do if a[j]<a[j+1] then begin //тут он нужнее, чем там, куда ты поставила. buf:=a[j]; a[j]:=a[j+1]; a[j+1]:=buf; end; for k:=0 to size-1 do //интересно, а зачем тебе для этого цикла отдельная переменная к? // Label2.Caption:=Label2.Caption+''+IntToStr(a[k]); вот изврат... может, все же в стринггрид? //Label2.caption:=Label2.Caption+#13; StringGrid2.Cells[k,0]:=IntToStr(a[k]); end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.Close; end; end.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!