Содержание материала

Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел.

 

Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент становится минимальным (максимальным) и продолжается проверка оставшихся элементов.

 

Диалоговое окно приложения поиска минимального элемента массива содержит соответствующим образом настроенный компонент stringGridi, который применяется для ввода элементов массива, два поля меток (Label1 и Labeia), использующиеся для вывода информационного сообщения и результата работы программы, и командную кнопку (Buttonl), при щелчке на которой выполняется поиск минимального элемента массива. В табл. 5.4 приведены значения свойств компонента stringGridi.

 

Свойство Значение

 

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. Поиск минимального элемента массива

Code:

unit lookmin_;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

Label2: TLabel;

StringGridl: 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[l..SIZE] of integer; // массив целых

min: integer; // номер минимального элемента массива

i: integer; // номер элемента, сравниваемого с минимальным

begin

// ввод массива for i:=1 to SIZE do

a[i] := StrToInt(StringGridl.Cells[i - 1, 0]);

// поиск минимального элемента

min := 1; // пусть первый элемент минимальный

for i := 2to SIZE do

if a[i] < a[min] then

min := i;

// вывод результата

label2.caption := 'Минимальный элемент массива:'

+ IntToStr(a[min] + #13 + 'Номер элемента:' + IntToStr(min);

end;

 

end.

 


 

Примечание от Vit: боюсь что код приведенный выше представляет интерес для студентов и тех кто изучает алгоритмы програмирования, для тех же кто занимается практической деятельностью изобретать велосипед нет смысла, всё уже сделано до нас, осталосьт заглянуть в модуль Math от Delphi и найти в нём функции нахождения требуемых величин:

 

Функция модуля Math

Описание

MaxIntValue

Returns the largest signed value in an integer array

MaxValue

Returns the largest signed value in an array

Mean

Returns the average of all values in an array

MeanAndStdDev

Calculates the mean and standard deviation of array elements

MinIntValue

Returns the smallest signed value in an integer array

MinValue

Returns smallest signed value in an array

MomentSkewKurtosis

Calculates the mean, variance, skew, and kurtosis

Norm

Returns the Euclidean 'L-2' norm.

PopnStdDev

Calculates the population standard deviation

PopnVariance

Calculates the population variance

StdDev

Returns the sample standard deviation for elements in an array.

Sum

Returns the sum of the elements in an array.

SumInt

Returns the sum of the elements in an integer array.

SumOfSquares

Returns the sum of the squared values from a data array.

SumsAndSquares

Returns the sum of the values and the sum of the squared values in an array.

TotalVariance

Returns the statistical variance from an array of values.

Variance

Calculates statistical sample variance from an array of data.

 

Впрочем тем кто изучает алгоритмику неплохо было бы взглянуть на исходники этого модуля Math, где и найти реализацию приведенных функций.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить