Лабораторная работа №6




Скачать 43.19 Kb.
НазваниеЛабораторная работа №6
Дата21.12.2012
Размер43.19 Kb.
ТипЛабораторная работа

Лабораторная работа №6

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

Работа с двумерными массивами в среде Delphi


Двумерные массивы удобно вводить через компонент StringGrid, который находится на вкладке Additional (Дополнительная). Основные свойства этого компонента перечислены в лабораторной работе №5. В отличии от работы с одномерными массивами надо указывать количество строк и столбцов (RowCount, ColCount). Обращение к ячейке осуществляется следующим образом: StringGrid1.Cells[столбец,строка].


Внимание: На первом месте всегда номер столбца.


Выводить элементы массива можно в компонент StringGrid или на форму через метку Label.

Рассмотрим ввод и вывод элементов массива на конкретных задачах.


Задача №1. Найти в целочисленном массиве минимальный и максимальный элементы и поменять их местами.


В

вод элементов массива осуществляется через StringGrid, а вывод результатов на форму через Label (см. рис.1). На форме помещены три кнопки: Вычислить, Сброс, Выход.

StringGrid1


Label1



Label2

Label3


Label5

Label6


Label7

Label8






Button1

Button2

Button3


Рис. 1.

При нажатии кнопки Вычислить активизируется следующая процедура:


procedure TForm1.Button1Click(Sender: TObject);

var a:array[1..5,1..5] of integer;

max,min,i,j,maxi,maxj,mini,minj:integer;

begin

for j:=1 to 5 do

begin

for i:=1 to 5 do

begin

a[i,j]:=strtoint(StringGrid1.Cells[i-1,j-1]);

label5.Caption:=Label5.Caption+inttostr(a[i,j])+' ';

end;

label5.Caption:=Label5.Caption+#13;

end;

max:=a[1,1]; maxi:=1; maxj:=1;

min:=max; mini:=1; minj:=1;

for j:=1 to 5 do

for i:=1 to 5 do

begin if a[i,j]>max then begin max:=a[i,j];

maxi:=i;

maxj:=j

end;

if a[i,j]then begin min:=a[i,j];

mini:=i;

minj:=j;

end;

end;

a[maxi,maxj]:=min;

Label7.Caption:='max='+inttostr(max);

a[mini,minj]:=max;

Label8.Caption:='min='+inttostr(min);

for j:=1 to 5 do

begin

for i:=1 to 5 do

label6.Caption:=Label6.Caption+inttostr(a[i,j])+' ';

label6.Caption:=Label6.Caption+#13;

end;

end;


Текст процедуры обработки события KeyPress приведен ниже. Процедура осуществляет контроль вводимых данных, разрешая вводить в ячейку таблицы только цифры. Перемещение курсора в нужную ячейку таблицы осуществляется по нажатию клавиши Enter. Свойства Col и Row содержат соответственно номера колонки и строки таблицы, в которой находится курсор. Надо учитывать, что колонки и строки нумеруются с нуля.


procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

#8,'0'..'9':;

#13: begin if stringGrid1.Col< stringGrid1.ColCount-1

then stringGrid1.Col:=stringGrid1.Col+1 {переход на следующую колонку}

else begin

if stringGrid1.Row< stringGrid1.RowCount-1

then

begin stringGrid1.col:=0;

stringGrid1.Row:=stringGrid1.Row+1 {переход на следующую строку}

end;

end;

end;

else key:=Chr(0);

end;

end;


При нажатии кнопки Сброс происходит очистка полей ввода-вывода:


procedure TForm1.Button2Click(Sender: TObject);

var i,j:integer;

begin

for j:=1 to 5 do

for i:=1 to 5 do

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

label5.Caption:='';

label6.Caption:='';

label7.Caption:='';

label8.Caption:='';

stringGrid1.col:=0; {установка курсора в позицию 0,0 таблицы}

stringGrid1.row:=0;

end;


При нажатии кнопки Выход происходит закрытие приложения. См. предыдущие работы.


Задача №2: В целочисленной квадратной матрице (массиве) найти максимальный элемент среди элементов, лежащих на главной диагонали и ниже ее.


В этой задаче элементы массива вводятся через генератор случайных чисел, а вывод осуществляется в компонент StringGrid. Вид формы см. на рис.2.





Label1


StringGrid



Label2

Label3






Button1

Button2

Button3


Рис. 2.

При нажатии кнопки Вычислить активизируется следующая процедура:


procedure TForm1.Button1Click(Sender: TObject);

var a:array[1..5,1..5] of integer;

max,min,i,j,maxi,maxj,mini,minj:integer;

begin randomize; {активизация генератора случайных чисел}

for j:=1 to 5 do

for i:=1 to 5 do

begin

a[i,j]:=random(50); {заполнение массива}

StringGrid1.Cells[i-1,j-1]:=inttostr(a[i,j]); {вывод элементов массива в таблицу StringGrid}

end;

max:=a[1,1]; maxi:=1; maxj:=1;

for j:=1 to 5 do

for i:=1 to j do

begin if a[i,j]>max then begin max:=a[i,j];

maxi:=i;

maxj:=j

end;

end;

Label2.Caption:='max='+inttostr(max); {вывод найденного значения}

Label3.Caption:='i='+inttostr(maxj)+' j='+inttostr(maxi);

end;


При нажатии клавиши Сброс происходит очистка полей вывода:


procedure TForm1.Button2Click(Sender: TObject);

var i,j:integer;

begin

for j:=1 to 5 do

for i:=1 to 5 do

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

label2.Caption:='';

label3.Caption:='';

stringGrid1.col:=0;

stringGrid1.row:=0;

end;


Реакция на нажатие клавиши Выход аналогична рассмотренной ранее.


В заключении можно сказать, что обработка двумерных массивов Delphi осуществляется так же как и в языке Pascal. Отличие заключается только в формах ввода-вывода элементов массива. Надо помнить, что в Delphi:

  • на первом месте стоит номер колонки, а на втором – номер строки

  • колонки и строки нумеруются с нуля.

.




Похожие:

Лабораторная работа №6 iconЛабораторная работа Установка и настройка 6 Лабораторная работа Демонстрационный проект 7 Упражнение 1: Работа с основной схемой проекта 7 Упражнение 2: Работа со схемой «Резервуарный парк»
Разработка систем диспетчерского контроля и управления с использованием Infinityscada 4
Лабораторная работа №6 iconЛабораторная работа. Получение и свойства оксидов, гидроксидов и солей
Лабораторная работа. Ряд напряжений металлов. Гальванические элементы. Электролиз юююююю
Лабораторная работа №6 iconТематическое планирование биология, 6 класс
Морфология листа (лабораторная работа) 12. Строение растительного организма. Клетки и ткани 13. Типы растительных тканей (Лабораторная...
Лабораторная работа №6 iconЛабораторная работа №1 (одномерные массивы) 27
Лабораторная работа №6 (статические массивы, знакомство с графическим режимом. Возможно будет изменена) 49
Лабораторная работа №6 iconЛабораторная работа №5. Эксперимент лабораторная работа №6 Раздел II. Эмпирические исследования познавательных процессов. Ощущения и восприятие лабораторные работы №7-9: Методика «Специфика восприятия»
Цель: Выявление типов поведения студентов (коллег) в дискуссии (наблюдение по схеме Р. Бейлза)
Лабораторная работа №6 iconЛабораторная работа №1 Изучение автоматической телеграфной станции ат-пс-пд лабораторная работа №2 Изучение телеграфного коммутационного сервера «Вектор-2000»
Рецензент – зам начальника Гомельской дистанции сигнализации и связи Белорусской железной дороги В. И. Прокопюк
Лабораторная работа №6 iconЛабораторная работа Правила работы с вычислительной установки Лабораторная работа Работа с клавиатурой
Лабораторный практикум по информатике представляет собой учебно-практическое издание для студентов педагогического вуза непрофильных...
Лабораторная работа №6 iconЛабораторная работа по курсу «Физические основы микроэлектроники» Нижний Новгород, 2005
Операционный усилитель: Лабораторная работа по курсу «Микроэлектроника» / Сост. Н. В. Федосеева, С. М. Планкина. – Н. Новгород, ннгу,...
Лабораторная работа №6 iconЛабораторная работа №1 Лабораторная работа №1 1
В качестве примера рассматривается деятельность вымышленной компании «Computer Word». Компания занимается в основном сборкой и продажей...
Лабораторная работа №6 iconЛабораторная работа выполняется в дисплейном классе. Результат представляет собой работающую программу, которая может анализировать любые тексты и сообщать об ошибках программирования
Данная лабораторная работа рассчитана на 4 аудиторных часа и ещё 4 часа самостоятельной работы для изучения литературы и оформление...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница