Упражнение. Создайте приложение, которое выводит двумерный массив случайных целых чисел в объекте StringGrid и определяет минимальный и максимальный элементы, а также сумму элементов массива, расположенных на главной диагонали. Создайте форму, свойству Caption которой присвойте значение «Обработка двумерного массива». Выберите в палитре компонентов страницы Additional компонент StringGrid и разместите его в левом верхнем углу формы. Задайте для свойств ColCount (количество столбцов) и RowCount (количество строк) значения 6. Задайте для свойств FixedCols и FixedRows (количество фиксированных, непрокручиваемых столбцов и строк, используемых для размещения надписей номеров столбцов и строк). Справа от объекта StringGrid разместите кнопку Buttonl и задайте для ее свойства Caption значение «Заполнить». Ниже объекта StringGrid разместите панель GroupBoxl и присвойте ее свойству Caption значение «Определить». На данной панели разместите компоненты CheckBoxl, CheckBox2, СпескВохЗ и назначьте свойству Caption значения «Минимальный элемент», «Максимальный элемент», «Сумма элементов главной диагонали», соответственно. Справа от компонентов CheckBoxl, CheckBox2, СпескВохЗ разместите компоненты Editl, Edit2, Edit3 и удалите текст Editl, Edit2, Edit3 из соответствующих компонентов. Правее панели GroupBoxl разместите кнопку Button2 и задайте для ее свойства Caption значение «Вычислить».
Сохраните файл проекта и программного модуля. Прежде чем создавать обработчики событий щелчка мышью по кнопкам Buttonl и Button2, следует добавить в раздел описания переменных данного модуля целочисленные переменные I и J, предназначенные для хранения индексов массива (I – номер столбца, J – номер строки). var
Forml : TForm1;
I, J : integer;
Для получения подсказки Delphi по объекту StringGridl, указав объект, нажмите F1. В окне Delphi Help просмотрите общую информацию о назначении объекта. Щелкнув мышью по ссылке Properties (Свойства), откройте окно со списком свойств объекта, и, выбирая нужные свойства, например, Cells, ColCount и т. п., просмотрите справочную информацию. Для возврата к предыдущему экрану справки воспользуйтесь кнопкой Назад в панели инструментов окна Delphi Help. Щелкая мышью по ссылкам Methods (Методы) и Events (События), просмотрите список методов и событий объекта. Для просмотра примеров следует щелкнуть мышью по ссылке Example. Завершив просмотр справочной информации, закройте окно Delphi Help.
Создайте процедуру обработчика события щелчка мышью на кнопке Buttonl, в которой сначала будет выполнена операция вывода номеров строк и столбцов, а затем ячейки StringGridl будут заполнены случайными целыми числами. Для этого выберите в окне Инспектора объектов объект Buttonl и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого отредактируйте заготовку процедуры обработчика этого события следующим образом: procedure TForml.ButtonlClickCSender: TObject);
{заполнение массива}
begin
Randomize;
with StringGridl do {вывести номера строк в 0-м столбце и столбцов в 0-й строке}
begin
1:=0; {столбец 0}
for J:= 1 to RowCount — 1 do {вывести номера строк}
Cells[I,J] := IntToStr(J);
J:=0; {строка 0}
for I:= 1 to ColCount — 1 do {вывести номера столбцов}
Cells[I,J] := IntToStr(I);
end;
with StringGridl do {вывести в таблице элементы двумерного массива}
for I := 1 to ColCount — 1 do for J:= 1 to RowCount — 1 do
begin
Cells[I,J] := IntToStr(Round(Sin(Random(100))*100));
end;
end;
Для создания процедуры обработки массива выберите в окне Инспектора объектов объект Button2 и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого отредактируйте заготовку процедуры обработчика этого события следующим образом: procedure TForml.Button2Click(Sender: TObject); {обработка массива}
var
Min, Max, Sum : Integer; {локальные переменные – результаты обработки массива}
begin
if Checkbox1.Checked then {определение Min-элемента}
with StringGrid1 do begin
Min:=StrToInt(Cells[l,l]); {пусть — это Min-элемент}
for I := 1 to ColCount — 1 do
for J:= 1 to RowCount — 1 do
if StrToInt(Cells[I,J])
Min:=StrToInt(Cells[I,J]);
Edit1.Text:=IntToStr(Min):
end
else Edit1.Text:=»;
if Checkbox2.Checked then {определение Мах-элемента}
with StringGrid1 do begin
Max:=StrToInt(Cells[l,l]); {пусть — это Мах-элемент}
for I := 1 to ColCount — 1 do
for J:= 1 to RowCount — 1 do
if StrToInt(Cells[I,J])>Max then
Max:=StrToInt(Cells[I,J]);
Edit2.Text:=IntToStr(Max);
end
else Edit2.Text: = «;
if Checkbox3.Checked then {вычисление Sum}
with StringGrid1 do
begin
Sum:=0; {обнулить значение суммы перед подсчетом}
for i := 1 to ColCount — 1 do
Sum:=Sum+StrToInt(Cells[I,I]);
Edit3.Text:=IntToStr(Sum);
end
else
Edit3.Text:=»;
end;
Как видно из текста процедуры, в ней имеется три фрагмента, каждый из которых выполняет вычисления, если свойство Checked соответствующего флажка (Checkbox1, Checkbox2 или Checkbox3) имеет значение True. Операторы типа Edit1.Text:=»; Edit2.Text:=»; Edit3.Text:=»; обеспечивают очистку соответствующего окна Edit, если вычисление не проводилось. Для обращения к элементу массива, расположенному на главной диагонали StringGrid1, указывается одинаковый номер строки и столбца Cells[I,I]. Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение. Щелкнув мышью на кнопке Заполнить, проверьте заполнение надписей номеров строк и столбцов, а также заполнение объекта StringGrid значениями элементов двумерного массива. Убедитесь, что приложение правильно обрабатывает двумерный массив: определяет минимальное и максимальное значение, вычисляет сумму элементов на главной диагонали. После проверки работы приложения закройте его окно. |