Листинг 2. Ввод и обработка массива целых чисел
unit getar_;
Interface
Uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
Type
TForm1 = class(TForm)
Label1: TLabel;
StringGridl: TStringGrid;
Button1: TButton;
Label2: TLabel;
procedureButtonlClick(Sender: TObject); private
{ Private declarations }
Public
{ Public declarations }
End;
Var
Form1: TForml ;
Implementation
{$R *.dfm}
procedureTForml.ButtonlClick(Sender: TObject);var
a : array[1..5] of integer; // массив
summ: integer; // сумма элементов
sr: real; // среднее арифметическое
i: integer; // индекс
Begin
// ввод массива
// считаем, что если ячейка пустая, то соответствующий
// ей элемент массива равен нулю
for i:= 1 to 5 do
ifLength(StringGridl.Cells[i-1, 0]) <>0
thena[i] := StrToInt(StringGridl.Cells[i-1,0])
elsea[i] := 0;
// обработка массива
summ := 0;
for i :=1 to 5 do
summ := summ + a[i]; sr := summ / 5;
У вывод результата Label2.Caption :=
'Сумма элементов: ' + IntToStr(summ)
+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr);
End;
End.
После пробных запусков программы возникает желание внести изменения в процесс ввода массива. Так, было бы неплохо, чтобы курсор автоматически переходил в следующую ячейку таблицы, например, в результате нажатия клавиши <Enter>. Сделать это можно при помощи процедуры обработки события onKeyPress. На эту же процедуру можно возложить задачу фильтрации вводимых в ячейку таблицы данных. В нашем случае надо разрешить ввод в ячейку только цифр.
Текст процедуры обработки события OnKeyPress приведен в листинге 3. Следует обратить внимание на свойство Col, которое во время работы программы содержит номер колонки таблицы, в которой находится курсор. Это свойство можно также использовать для перемещения курсора в нужную ячейку таблицы. Однако нужно учитывать, что колонки таблицы, впрочем, как и строки, нумеруются с нуля.
Дата добавления: 2014-12-01; просмотров: 812;