top of page

Лабораторная работа № 19.

 

Использование компонентов таблиц для работы с двумерным массивом..

 

Цель работы: Изучить свойства компонента TStringGrid. Написать программу с использованием двумерных массивов

 

Теория.

Компонент TStringGrid предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки, расположена на странице Additional(рисунок 17.1)

 

 

 

Рисунок 17.1

 

Таблица делится на две части – фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/строк и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedColsи FixedRows можно задать другое количество фиксированных столбцов и строк(если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество столбцов и строк, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое – заголовки строк и столбцов(рис.17.2)

 

 

 

 

 

 

Рисунок 17.2

 

Центральным свойством компонента является Cells– двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел – номером столбца и номером строки, на пересечении которых она находится (нумерация начинается с нуля). Свойство cellsимеет тип String, поэтому программа может легко прочитать или записать содержимое нужной ячейки. Например:

Cells [1, 1] : = ‘Левая верхняя ячейка рабочей зоны’;

Количество ячеек по каждому измерению хранит пара свойств Colcount (количество столбцов) и RowCount(количество строк). Значения этих свойств и , следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны  быть как минимум  на единицу больше соответственно значений в свойствах FixedColsи FixedRows, определяющих размеры фиксированной зоны. Свойства компоненты представлены в таблице 17.

 

 

Пример: Найти сумму всех элементов двумерного массива 4×4.

  1. Расположить на форме следующие компоненты: StringGrid(Additional), Button, Label, Edit (для вывода результата);

  2. Свойства StringGrid, заменить на FixedCols=0(без заголовков строк), FixedRows=0(без заголовков столбцов);

  3. Свойства RowCount=4, ColCount=4$

  4. Свойство Options| GoEditing = true (разрешить редактировать);

  5. Расположить компоненты следующим образом(рис. 17.3)

 

 

 

Рисунок 17.3

 

Напишитеследующийобработчиксобытия:

 

procedure Form1.Button1Click (Sender: TObject);

var a : array [0..3, 0..3] of integer;

i, j, s : integer;

begin

s=0;

for i:=0 to 3 do

for j:=0 to 3 do

  begin

    a[i,j]:= StrToInt (StringGrid1.Cells[I,j]); {считываниеэлементов}

 s:=s+a[i,j];

end;

   Edit1.Text:=IntToStr(s);

end;

 

Задания.

 

Вариант № 1

Дан массив А(п,т). Требуется пределить:

а)максимальное по величине число;

б)минимальное по величине число;

в)среднее арифметическое элементов каждого изстолбцов, имеющих нечётные номера;

г)сумму положительных элементов каждой из строк,имеющих чётные номера.

 

Вариант № 2

Дана матрица 5x5. Заполнить ее значениями вещественноготипа. Найти среднее арифметическое всех значений. Проверитькаждый элемент. Если он больше нуля, то умножить его насреднее арифметическое, если меньше нуля, то сложить со ср.арифметическим. Задать новую матрицу

 

Вариант № 3

Дана матрица пхпвещественная. Ввести элементы матрицы.Вычислить сумму элементов,расположенных над главной диагональю.

Вариант № 4

Дана матрица A(5x4). Заполнить ее значениямивещественного типа. Найти максимальное значение в каждойстроке. Из этих значений получить вектор из 5-ти элементов.Выдать матрицу А и вектор В.

Вариант № 5

В заданном двумерном массиве А(п,т) заменить нулямиэлементы, стоящие в строках или столбцах, где имеются нули.

 

 

Вариант № 6

Дана матрица А(п,п). Заменить нулями все элементы,расположенные на главной диагонали (диагональ - сверху внизи слева направо) и выше неё.

 

Вариант № 7

Дана действительная квадратная матрица порядка п.Преобразовать матрицу по правилу: строку с номером п сделатьстолбцом с номером п, а столбец с номером п сделать строкой сномером п.

Вариант № 8

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

 

Вариант № 9

Дана (построчно) вещественная матрица Л размером 10x10и массив В(10).

а)нечетные строки матрицы А заменить на В;

б)четные столбцы матрицы А заменить на В;

 

Вариант № 10

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

 

 

Вариант № 11

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

 

Вариант № 12

 Дана матрица порядка п х n. Найти сумму элементов, расположенных в заштрихованной части матрицы

 

 

 

 

 

 

Вариант № 13

Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4. 

 

Вариант № 14

Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4. 

 

Вариант № 15

Дана матрица A(n, m) . Поменять местами первую и последнюю строку, а каждый элемент этих строк увеличить в два раза.

 

Вариант № 16

Дана матрица A(n, m). Найти строки, элементы которых одинаковы, если таковых нет, то первую строку скопировать в последнюю.

 

Вариант № 17

Дана матрица A(n, m) и массив B(n, m). Вывести матрицу, элементами которой являются значения, состоящие из произведения элементов массива на каждый элемент соответствующей строки.

 

Вариант № 18

Дана матрица A(n, mсостоящая из нулей и единиц. Заменить на 4 те строки ,у которых все элементы единицы.

 

Контрольные вопросы :

 

  1. Назначение компоненты  StringGrid?

  2. Свойства  компоненты  StringGrid?

  3.  Методы  компоненты  StringGrid?

  4. Как изменить размер фиксированной части таблицы ?

bottom of page