Лабораторная работа 7. Двумерный массив
2011-2012 учебный год
Краткая теория
К сегодняшнему занятию Вами изучены следующие элементы управления
Edit
Label
Button
RadioButton
CheckBox
SpinEdit (на вкладке Misc)
ListBox (на вкладке Standard)
Memo (на вкладке Standard)
ShowMessage
Компонент TStringGrid в Lazarus
Компонент TStringGrid - на вкладке компонентов Additional. Настройка таблицы StringGrid1
в окне Инспектор объектов
Убрать заголовки строк
FixedCols = 0
Убрать заголовки колонок
FixedRows = 0
Установить количество колонок
ColCount = 5
Установить количество строк
RowCount = 1
Установить ширину всех колонок
DefaultColWidth = 30
Установить высоту всех строк
DefaultRowHeight = 30
Об отметках
Основные упражнения не отмечены никакими специальными знаками, их выполнения достаточно для удовлетворительной оценки. Дополнительные упражнения отмечены "звездочками", их выполнение необходимо для получения повышенной оценки.
"5" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной и двумя "звездочками".
"4" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной "звездочкой".
"3" - в отчете выполнены все основные упражнения.
Упражнения
Сумма матрицы. Задать элементы двумерного массива целыми числами из отрезка с заданными границами с помощью генератора псевдослучайных чисел (ГПЧ). Подсчитать сумму всех элементов двумерного массива.
Требования к выполнению. Использовать целые случайные числа. Разместить на форме следующие компоненты.
Пример интерфейса
Пример.
procedure TForm1.Button1Click(Sender: TObject); var col, row : Byte; a, b : Integer; begin randomize; a := SpinEdit1.Value; b := SpinEdit2.Value; for col := 0 to StringGrid1.ColCount - 1 do begin for row := 0 to StringGrid1.RowCount - 1 do begin StringGrid1.Cells[col, row] := IntToStr(Random(b - a + 1) + a); end; end; end; procedure TForm1.Button2Click(Sender: TObject); var col, row : Byte; s : Integer; begin s := 0; for col := 0 to StringGrid1.ColCount - 1 do begin for row := 0 to StringGrid1.RowCount - 1 do begin s := s + StrToInt(StringGrid1.Cells[col, row]); end; end; Label1.Caption := IntToStr(s); end; procedure TForm1.FormShow(Sender: TObject); var col, row : Byte; a, b : Integer; begin randomize; a := SpinEdit1.Value; b := SpinEdit2.Value; for col := 0 to StringGrid1.ColCount - 1 do begin StringGrid1.Columns.Items[col].Alignment := taRightJustify; // StringGrid1.Columns.Items[col].Width:=20; for row := 0 to StringGrid1.RowCount - 1 do begin StringGrid1.Cells[col, row]:=IntToStr(Random(b - a + 1) + a); end; end; end;
Квадраты отрицательных. Заменить все отрицательные числа в матрице их квадратами.
Требования к выполнению. Использовать целые случайные числа. Разместить на форме следующие компоненты.
Пример интерфейса
procedure TForm1.Button1Click(Sender: TObject); {См. Пример 1} procedure TForm1.Button2Click(Sender: TObject); var col, row : Byte; s : Integer; begin for col := 0 to StringGrid1.ColCount - 1 do begin for row := 0 to StringGrid1.RowCount - 1 do begin s := StrToInt(StringGrid1.Cells[col, row]); if s < 0 then begin StringGrid1.Cells[col, row] := IntToStr(s * s); end; end; end; end; procedure TForm1.FormShow(Sender: TObject); {См. Пример 1}
Диагональ матрицы. Заменить все числа на диагонали матрицы единицами.
Требования к выполнению. Использовать целые случайные числа.
Задание для самостоятельного выполнения. Найти сумму элементов над главной диагональю и сумму под главной диагональю, вывести их в Label1 и Label2.
Пример интерфейса
if col = row then begin StringGrid1.Cells[col, row] := '1'; end;
Домашнее задание
Сумма матрицы 2. В программе к задаче "Сумма матрицы" Отдельно вычислить суммы строк и столбцов и записать их соответсвенно в FixedRow, FixedCol.
Требования к выполнению. Использовать целые случайные числа. Разместить на форме следующие компоненты.