Поиск минимального (максимального) элемента массива
Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел.
Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент становится минимальным (максимальным) и продолжается проверка оставшихся элементов.
Диалоговое окно приложения поиска минимального элемента массива содержит соответствующим образом настроенный компонент stringGridi, который применяется для ввода элементов массива, два поля меток (Label1 и Label2), использующиеся для вывода информационного сообщения и результата работы программы, и командную кнопку (Button1), при щелчке на которой выполняется поиск минимального элемента массива. В табл. 5.4 приведены значения свойств компонента stringGridi.
Таблица 5.4. Значения свойств компонента stringGrid1.
Свойство | Значение |
---|---|
ColCount | 005 |
FixedCols | 000 |
RowCount | 001 |
DefaultRowHeight | 024 |
Height | 024 |
DefaultColWidth | 064 |
Width | 328 |
Options.goEditing | True |
Options.AlwaysShowEditing | True |
Options.goTabs | True |
В листинге 5.6 приведена процедура обработки события Onclick для командной кнопки Button1, которая вводит массив, выполняет поиск минимального элемента и выводит результат – номер и значение минимального элемента массива.
Листинг 5.6. Поиск минимального элемента массива.
unit lookmin_; interface Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCTRLs, Grids; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Label2: TLabel; StringGrid1: TStringGrid; procedure ButtonlClick(Sender: TObject); private { Private declarations) public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonlClick(Sender: TObject); const SIZE=5; var a:array[1..SIZE]of integer; // массив целых min:integer; // номер минимального элемента массива i:integer; // номер элемента, сравниваемого с минимальным begin // ввод массива for i: = 1 to SIZE do a[i]:= StrToInt(StringGrid1.Cells[i-1.0]); // поиск минимального элемента min:= 1; // пусть первый элемент минимальный for i:= 2 to SIZE do if a[i]< a[min]then min: = i; // вывод результата label2.caption:= 'Минимальный элемент массива:' +IntToStr(a[min] +#13+'Номер элемента:'+ IntToStr(min); end; end.
На рис. 5.8 приведен вид диалогового окна приложения после щелчка на кнопке Поиск.
Рис. 5.8. Окно приложения Поиск минимального элемента массива