Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Delphi (повторение).doc
Скачиваний:
7
Добавлен:
04.05.2019
Размер:
2.74 Mб
Скачать

5.8.3. Стандартные функции обработки массивов

Для числовых массивов определены функции (табл. 5.16). Эти функции определены в модуле math и этот модуль должен подклю­чаться оператором uses, чтобы компилятор их понимал [1].

Таблица 5.16

Функции для числовых массивов

Функция

Тип аргумента

Тип результата

Описание

MaxIntValue

array of integer

integer

Возвращает максимальное значение элемента массива целых чисел.

MinIntValue

array of integer

integer

Возвращает минимальное значение элемента массива целых чисел.

MaxValue

array of double

double

Возвращает максимальное значение элемента числового массива.

MinValue

array of double

double

Возвращает минимальное значение элемента числового массива.

Sum

array of double

extended

Возвращает сумму элементов массива.

В качестве примера использования стандартных функций модуля Math показано диалоговое окно приложения (рис. 5.24).

Рис. 5.24. Диалоговое окно приложения

Фрагмент программы с используемыми процедурами:

var

Form1: TForm1;

a:array[1..6] of Double = (1,3,45,6,8,-7);

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer; //индексы

MA:double;

begin

Label1.Caption:='';

// ввод модифицированных значений в массив иначе

// работа будет со старыми значениями

for i := 1 to 6 do

a[i]:= StrToFloat(StringGrid1.Cells[i,1]);

// выбор вычисляемой функции

if RadioGroup1.ItemIndex = 0{'максимальный элемент'} then

begin

Ma:= MaxValue(a);

Label1.Caption:='максимальный элемент = '+

floatToStr(Ma);

end;

if RadioGroup1.ItemIndex = 1{'минимальный элемент'}

then

begin

Ma:= MinValue(a);

Label1.Caption:='минимальный элемент = '+

floatToStr(Ma);

end;

if RadioGroup1.ItemIndex = 2{('сумма')}

then

begin

Ma:= Sum(a);

Label1.Caption:='сумма элементов = '+ floatToStr(Ma);

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

i,j: Integer;

begin

for j := 1 to 6 do

//запись номеров столбцов

StringGrid1.Cells[j,0]:=IntToStr(j);

//заполнение начальных значений массива в таблицу

for i := 1 to 6 do

StringGrid1.Cells[i,1]:= FloatToStr(a[i]);

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.ColCount+1;

'-':

//минус можно ввести только первым символом,

// т.е. когда ячейка пустая

begin

if Length(StringGrid1.Cells[stringGrid1.Col,

stringGrid1.Row])<>0

then Key:=Chr(0)

end;

else Key:= Chr(0);

end;

end;

end.