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

Лабораторная работа№21 Примеры использования компонента StringGrid.

Цель занятия: научиться создавать приложения, используя компонент StringGrid.

Студент должен:

знать:

  • что представляет собой TStringGrid – как класс для табличного отображения данных;

  • назначение компонента StringGrid;

  • основные характеристики таблицы StringGrid;

  • как изменять свойства компонента StringGrid во время выполнения программы;

  • как управлять методами во время выполнения программы;

уметь:

  • редактировать данные в таблице;

  • изменять значение свойств компонента StringGrid;

  • писать адекватные реакции на события;

  • изменять свойства компонента StringGrid во время выполнения программы;

  • управлять методами компонента во время выполнения программы.

Примеры и задания.

I. В первой целочисленной матрице (4х4) поменять местами первую и последнюю строки, а во второй поменять местами первый и последний столбец. Ввод значений произвести случайным образом.

Рекомендуемый вид формы программы приведен на рисунке.

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

1. Откройте новый проект, поместите на форму необходимые компоненты.

2. С помощью инспектора объектов свойствам компонентов StringGrid1 и StringGrid2 и зададим следующие значения:

FixedCols – 0,

FixedRows – 0,

ColCount – 4,

RowCount – 4.

3. Изменим размеры компонентов StringGrid1 и StringGrid2 таким образом, чтобы в них умещалось 4 строки и 4 столбца.

4. Примеры процедур

procedure TForm1.------- Click (Sender: TObject);

var

i,j:integer;

begin

Randomize;

for i :=0 to StringGrid1.ColCount do

for j :=0 to StringGrid1.RowCount do

begin

StringGrid1.Cells[i,0]:=IntToStr(random(100));

StringGrid1.Cells[i,1]:=IntToStr(random(100));

StringGrid1.Cells[i,2]:=IntToStr(random(100));

StringGrid1.Cells[i,3]:=IntToStr(random(100));

end;

for i :=0 to StringGrid1.ColCount do

for j :=0 to StringGrid1.RowCount do

begin

StringGrid3.Cells[0,j]:=IntToStr(random(100));

StringGrid3.Cells[1,j]:=IntToStr(random(100));

StringGrid3.Cells[2,j]:=IntToStr(random(100));

StringGrid3.Cells[3,j]:=IntToStr(random(100));

end;

end;

procedure TForm1.--------Click(Sender: TObject);

var

i,j:integer;

begin

for i :=0 to StringGrid1.ColCount do

begin

StringGrid2.Cells[i,3]:=StringGrid1.Cells[i,0];

StringGrid2.Cells[i,2]:=StringGrid1.Cells[i,2];

StringGrid2.Cells[i,1]:=StringGrid1.Cells[i,1];

StringGrid2.Cells[i,0]:=StringGrid1.Cells[i,3];

end;

for j:=0 to StringGrid3.RowCount do

begin

StringGrid4.Cells[3,j]:=StringGrid3.Cells[0,j];

StringGrid4.Cells[2,j]:=StringGrid3.Cells[2,j];

StringGrid4.Cells[1,j]:=StringGrid3.Cells[1,j];

StringGrid4.Cells[0,j]:=StringGrid3.Cells[3,j];

end;

end;

procedure TForm1.------ Click(Sender: TObject);

var

i,j:integer;

begin

for i :=0 to StringGrid1.ColCount do

for j :=0 to StringGrid1.RowCount do

begin

StringGrid1.Cells[i,j]:='';

StringGrid2.Cells[i,j]:='';

StringGrid3.Cells[i,j]:='';

StringGrid4.Cells[i,j]:='';

end;

end;

end.

  1. Поясните процедуры.

  2. Предложите свой вариант решения.

II Выполните задания

  1. Поместить на форму таблицу по образцу.

  2. Предусмотреть возможность редактирования ячеек.

  3. Выделить цветом ячейки с названиями столбцов и строк.

  4. В программе занести во все ячейки, кроме 3-х слово неизвестно.

  5. Предусмотреть программно изменение высоты строк и ширины столбцов.

  6. Таблица должна быть снабжена полосами прокрутки.

  7. Положение столбцов и строк с названиями зафиксировать.

  8. Прочертить названия.

  9. Добавить меню: файл.

III. Задания для самостоятельного выполнения.

Варианты заданий:

Вариант 1.

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

  2. Создать таблицу А(5,6). Отрицательные элементы четных столбцов заменить на противоположные.

Вариант 2.

  1. Создать таблицу А(2,5). Найти произведения элементов каждого столбца. Вывод значений произведения закончить при первом отрицательном значении произведения.

  2. Создать таблицу А(4,6). Вывести номера тех строк и столбцов, на пересечении которых находятся элементы >0 но <3.73.

Вариант 3.

  1. Создать таблицу А(2,7). Вывести номер каждого столбца, сумма элементов которого <0.

  2. Создать таблицу 5*5. Найти произведения элементов таблицы, которые имеют значения не превышающие нуля.

Вариант 4.

  1. Создать таблицу А(2,10). Вывеет произведения элементов каждого столбца. Вывод значений произведений закончить при равенстве элементов в столбце.

  2. Создать таблицу 5*5. Положительные элементы заменить нулями, а отрицательные - единицами.

Вариант 5.

  1. Создать таблицу А(2,8). Вывести номера строк, оба элемента которых имеют нулевые значения.

  2. Создать таблицу 5*5. Вывести максимальный элемент каждой строки.

Вариант 6.

  1. Создать таблицу 2*8. Последовательно суммировать разности 1 и 2 элемента каждой строки. Выводя значение каждой суммы прекратить суммирование, если значение суммы превысит заданную величину Т.

  2. Создать таблицу А(6,4). Сформировать 5 столбец таблицы, элемент которого А(1,5) равен среднему арифметическому элементов 1-ой стоки.

Вариант 7.

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

  2. Создать таблицу 6*4. Расположить элементы строк в порядке убывания.

Вариант 8.

  1. Создать таблицу А(2,10). 1-ый элемент каждого столбца представляет абсциссу, а 2-ой - ординату одной из 10 точек., Номер столбца рассматривается как номер точки. Вывести расстояние точек от начала координат, вывод закончить, как только встретится точка, отстоящая от начала координат более чем на заданную величину В.

  2. Создать таблицу С(5,6). сформировать и вывести таблицу А, если: A(I,J)=C(I,J), при I <>J, I>J; A(I,J)=0, при I<>J, I

Вариант 9.

  1. Создать таблицу 2*10. Вывести номер каждого столбца, элементы которого имеют совпадающие значения.

  2. Создать таблицу 5*5. Найти и вывести положительные элементы лежащие ниже главной диагонали.

Вариант 10.

  1. Создать таблицу 2*10. Вывести номер каждого столбца, знаки элементов которой не совпадают.

  2. Составить программу для заполнения таблицы умножения.

Вариант 11.

  1. Создать таблицу 2*10. Вывести среднее арифметическое элементов каждой строки. Вывод закончить, если очередное значение среднего арифметического оказалось вне заданного интервала [А,8].

  2. Создать таблицу 4*6. Найти число К, обладающее таким свойством, что в любой строке таблицы есть элемент больший или равный К.

Вариант 12.

  1. Создать таблицу 2*10. Вывести номер каждой строки, квадрат элемента которого меньше второго элемента строки.

  2. Составит программу, которая выводит первый положительный элемент каждого столбца таблицы 6*6.

Вариант 13.

  1. Создать таблицу 2*10. Вывести каждый элемент первой строки, который больше находящегося в одном столбце с ним элемента второй строки.

  2. Создать таблицу 4*6. Найти и вывести минимальный элемент каждого столбца.

Вариант 14.

  1. Создать таблицу 2*10. Вывести сумму элементов тех строк, для которых значение суммы >Р, но <Т. Р, Т -заданные величины.

  2. В группе из 10 учащихся подсчитать качественную успеваемость по результатам 3-х экзаменов. Номера учеников и оценки по экзаменах считать исходными данными.

Вариант 15.

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

  2. Для формирования сборной страны по хоккею, предварительно выбрано 15 игроков. На основании протоколов 3-х игр составлена таблица, в которой содержится штрафное время каждого игрока по каждой игре (2, 5 или 10 мин). Составить список кандидатов в сборную. Игрок, оштрафованный хотя бы один раз на 10 мин из кандидатов исключается.

Вариант 16.

  1. Создать таблицу 2*10. Вывести среднее арифметическое двух элементов каждого столбца, в котором модуль разности этих элементов меньше 0.1.

  2. В группе из 10 учащихся по результатам 3-х экзаменов определить лучшего.

Вариант 17.

  1. Создать таблицу 5*5. Ввести ее и подсчитать количество элементов в четных строках, которые больше 0, но меньше 1. Результаты вывести.

  2. Создать таблицу А(6,6). Сформировать таблицу В по следующему правилу: - если сумма соседних элементов (по горизонтали) по отношению к элементу А(I,К)>2, то В(I,К)=0; - остальные элементы не изменяются.

Вариант 18.

  1. Создать таблицу 5*4. Найти сумму элементов стоящих в четных строках на нечетных местах.

  2. В группе из 15 учащихся по результатам 3-х экзаменов составить список назначенных на стипендии. Если есть оценки 2 ил 3,то стипендия не назначается. Номера учащихся и оценки на экзаменах считать исходными данными.

Вариант 19.

  1. Создать таблицу 10*10Найти сумму положительных элементов побочной диагонали. Предусмотреть ввод таблицы и вывод результатов.

  2. Создать таблицу А(5,5). Сформировать линейные таблицы В, С.Записать в таблицу В все положительные элементы таблицы А, а в таблицу С - все отрицательные элементы.

Вариант 20.

  1. Создать таблицу 3*4. Найти среднее арифметическое элементов таблицы. Результат вывести.

  2. В группе из 15 учащихся подсчитать абсолютную успеваемость по результатам 2-х экзаменов. Номера учеников и оценки на экзаменах считать исходными данными.

Вариант 21.

  1. Создать таблицу 5*5. Подсчитать произведение элементов главной диагонали этой таблицы.

  2. Создать таблицу 6*4. Среди элементов таблицы есть одинаковые. Подсчитать их количество.

Вариант 22.

  1. Даны две последовательности чисел: А1.А2, A3, ..., AJ,..., A14; Х1,X2,X3,..., XJ:,…,X14.Ввести их и сформировать таблицу С(I;J) при условии:

C(I,J)=I*A(J), если I - нечетные;

C(I,J)=I*X(J), если I - четные.

Вывести размером 8*14 таблицу C(I,J), I=[l,8], J=[l,14].

  1. Создать таблицу 4*6. Вывести элементы с номерами столбцов, которые начинаются со значения R.

Вариант 23.

  1. Создать таблицу 4*3. Найти значение функции Y=ПX(I,J), где X(I,J) - элементы нечетных строк. Предусмотреть ввод таблицы и вывод результатов.

  2. Создать таблицу 5*5. Найти в каких столбцах таблицы есть одинаковые элементы.

Вариант 24.

  1. Создать таблицу Х(2,3). Найти значения функции Y=SINX(I,J)*LOG(ABS(X(I,J))), где X(I,J) - элементы столбцов таблицы Х

  2. Создать таблицу 5*5. В ней поменять местами строку, содержащей элемент с наибольшим значением, со сорокой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственные.

Вариант 25.

  1. Создать таблицу 5*5. Вывести отличные от нуля элементы и их количество.

  2. Создать таблицу А(6,4). Сформировать линейную таблицу В, где В(I) - значение первого по порядку положительного элемента I-й строки таблицы А.

Вариант 26.

  1. Составить программу поиска максимального по модулю элемента таблицы 5*6 и его индексов.

  2. Создать две таблицы А(4,4) и В(4,4). Переписать элементы из таблицы А в таблицу В, а из таблицы В в таблицу А.

Вариант 27.

  1. Создать таблицу A(I,J), размером 3*5. Вычислить значения таблицы B(I,J), где: B(I,J)=A(I,J),если I=J; B(I,J)=0, если I<>J.

  2. Создать две таблицы А(5,5) и В(5,5). Найти для скольких строк количество отрицательных элементов I-й строки таблицы А совпадает с количеством отрицательных элементов соответствующей I-й строки таблицы В.

Вариант 28.

  1. Создать таблицу X(I,J) размером 5*5. Сформировать таблицу С при условии: C(I,J)=SQRT(SQRT(ABS(X(I,J)))+LN(ABS(X(I,J)))), где I-четное C(I,J)=1/(EXP(X(I,J))+SIN(X(I,J))), где I - нечетное.

  2. Сформировать таблицу А(5,5), первая строка которой задается формулой А(1,К)=2*К-Н, вторая строка - А(2,К)=К-5, а каждая следующая строка есть сумма двух предыдущих.

Вариант 29.

  1. Создать таблицу У(5,5). Сформировать таблицу X при условии:

X(I,J)= 1/(Y(I,J)+LOG(ABS(Y(I,J)))), где I - четное;

X(I,J)=SQRT(EXP(Y(I,J))+ABS(SIN(Y(I,J)))), где I - нечетное.

  1. Создать таблицу А(4,6) и натуральные числа К, Р (1<=К<Р<=6). Поменять в таблице К-й и Р-й столбцы.

Вариант 30.

  1. Создать таблицу 5*5. Найти наименьший элемент в нечетных столбцах.

  2. Создать таблицу 6*4. Сформировать линейную таблицу В, где В(I) - среднее арифметическое положительных элементов I - строки.

Вариант 31.

  1. Создать таблицу и подсчитать произведение элементов главной диагонали этой.

  2. Создать две таблицы А(3,6) и В(3,6). Вывести номера тех строк, в которых содержатся не более трех положительных элементов.

Вариант 33.

  1. Создать таблицу 5*5. Найти количество положительных элементов, лежащих в верхнем треугольнике.

  2. Создать таблицу 2*8. Первый элемент строки представляет собой внутренний радиус кольца, второй - внешний радиус. Вывести площади колец. Вывод закончить, если внешний радиус очередного кольца оказался больше внутреннего радиуса предыдущего. Площадь кольца S=PI*(RA2-RA2).

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

  1. Что представляет собой TStringGrid – как класс для табличного отображения данных;

  2. Для чего предназначен компонент StringGrid?

  3. Перечислить основные характеристики таблицы StringGrid.

  4. Что показывают свойства Col и Row?

  5. Как отредактировать данные в таблице? С помощью каких свойств можно это сделать?

  6. Какое событие отвечает в момент выбора пользователем ячейки и какие параметры передаются в обработчик этого события?