РефератыИнформатикаСоСоздание и обработка линейного массива

Создание и обработка линейного массива

Лабораторная работа
На тему: «Создание и обработка линейного массива. Использование компонента
StringGrid для представления двумерных массивов в среде Delphi»

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


Решение:


Создайте папку для сохранения проекта «Массив1». Сохраните проект – Massiv. На форме разместите компоненты Label1,2 и Edit1,2 и кнопку Button1. Для свойства Caption кнопки задайте значение «Создать массив». Разместите на форме панель GroupBox1 и задайте значение «Определить», для свойства Caption.


В этой панели разместите компоненты CheckBox1,2,3,4, для свойства Caption которых задайте значения: «Минимальный элемент», «Максимальный элемент», «Сумма всех элементов», «Число положительных элементов», соответственно. Напротив них разместите компоненты Edit3,4,5,6. Если компоненты CheckBox не будут отображаться, то следует выделить панель GroupBox1 и выбрать в контекстном меню команду Control

Send
to
Back
(Порядок → На задний план).


В нижней части формы разместите кнопку Button2 и задайте название – «Вычислить». Удалите текст Edit1,2,3,4,5,6 из соответствующих компонентов. Выровняйте компоненты на форме, как показано на рис. 4.1. Зафиксируйте положение компонентов на форме с помощью команды Edit>LockControls из главного меню.



Рис. 4.1 Пример формы проекта «Массив1»


Прежде чем создавать обработчики событий щелчка мышью по кнопкам, в разделе описания переменных необходимо объявить переменные целого типа N, I, где N – размер массива, а I – порядковый номер элемента массива, а также X – динамический
массив целых чисел.


Var


Form1: TForm1;


N, I: integer;


X
:
array
of
integer
;


{описание динамического массива целых чисел}


Примечание:
динамические массивы отличаются от обычных статистических массивов тем, что для них не объявляется заранее длина – число элементов. При объявлении динамического массива место под него не отводится. Прежде чем использовать массив, надо задать его размер процедурой SetLength
.


Для предупреждения ввода в окно Edit1 нечислового значения, используйте обработку события OnKeyPress для соответствующего компонента. Выполните это самостоятельно (см. лаб. раб. №3).


Для создания процедуры обработки события, создания массива целых чисел, выберите кнопку «Создать массив», затем на странице События сделайте двойной щелчок на пустом поле списка события OnClick. После этого отредактируйте процедуру в окне Редактора кода следующим образом:


Begin


Randomize;


N:= StrToInt (Edit1. Text
);
{число элементов массива}


SetLength
(
X
,
N
);
{задать массиву Х длину N}


Edit2. Text:= ‘»;
{очиститьокно Edit2}


For I:= 0 to N‑1 do


Begin


X[I]:= Round (Sin(Random(100))*100);


{присвоить элементу массива случайное значение}


Edit2. Text:= Edit2. Text + ‘» + IntToStr (X[I]);


{вывести элементы массива}


End
;


End
;


Обработку массива опишите в процедуре обработчика события щелчка мышью на кнопке «Вычислить». В окне Редактора кода в заготовку процедуры поместите описание локальных переменных следующее:


Var


Max, Min, Sum, CountPlus: integer;


где Max – максимальный элемент массива, Min – минимальный элемент массива, Sum – сумма всех элементов массива, CountPlus – количество положительных элементов массива. Текст процедуры обработки массива может быть записан следующим образом:


Begin


If
CheckBox
1.
Checked then Min:= X[0];


Edit3. Text:= ‘»;


If CheckBox2. Checked then Max:= X[0];


Edit4. Text:= ‘»;


Sum:= 0;


Edit5. Text:= ‘»;


CountPlus:= 0;


Edit6. Text:= ‘»;


For I:= 0 to N‑1 do


Begin


If CheckBox1. Checked then


If Min > X[I] then Min:= X[I];


If CheckBox2. Checked then


If Max < X[I] then Max:= X[I];


If CheckBox3. Checked then


Sum:= Sum + X[I];


If CheckBox4. Checked then


If X[I] >0 then CountPlus:= CountPlus + 1;


End
;


{вывод результатов обработки массива}


If CheckBox1. Checked then Edit3. Text:=IntToStr(Min);


If CheckBox2. Checked then Edit4. Text:=IntToStr(Max);


If CheckBox3. Checked then Edit5. Text:=IntToStr(Sum);


If CheckBox4. Checked then Edit6. Text:=IntToStr(CountPlus);


End
;


Сохраните файлы проекта и программного модуля, запустите программу на выполнение, задавая различные значения числа элементов, убедитесь в правильной работе приложения.


Задание 2.
Создайте приложение, которое выводит двумерный массив случайных целых чисел и определяет минимальный и максимальный элементы в этом массиве.


Решение:


1. Сохраните проект в папке «Массив2» с именем Massiv2 (файл модуля можно сохранить как Unit1).


2. Создайте форму «Обработка двумерного массива».


3. Выберите в палитре компонентов страницы Additionalкомпонент StringGrid и разместите его в левом верхнем углу (см. рис. 5.1). Задайте для свойств ColCount (количество столбцов) и RowCount (количество строк) значение 6. Задайте для свойств FixedColsи FixedRows (кол

ичество фиксированных, непрокручиваемых столбцов и строк, используемых для размещения надписей номеров строк и столбцов).


Примечание:
данный компонент представляет собой таблицу, содержащую строки. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующие в окне компонента.


4. Справа от объекта разместите кнопку Button1 и задайте для нее свойство Caption значение «Заполнить». Ниже разместите панель GroupBox1 и присвойте значение «Определить». На данной панели разместите компоненты CheckBox 1,2 и назначьте свойству Caption значения «Минимальный элемент», «Максимальный элемент» соответственно. Затем справа разместите компоненты Edit 1,2 и кнопку с надписью «Вычислить». Выровняйте компоненты как показано на рис. 5.1.


5. Прежде чем создавать обработчики событий кнопок «Заполнить» и «Вычислить», следует добавить в раздел описания переменных данного модуля целочисленные переменные, предназначенные для хранения индексов массива.


Var


Form1: TForm1;


I, J: integer;


6. Создайте процедуру обработки события щелчка мышью на кнопке Button1, в которой сначала будет выполнена операция вывода номеров строк и столбцов, а затем ячейки StringGrid1 будут заполнены случайными целыми числами.



Рис. 5.1 Пример формы проекта «Массив2»


Примечание:
при изучении языка TPascal вы использовали оператор with…do для сокращения записи при обращении к полям записей. Теперь можно применять этот оператор для обращения к свойствам и методам объекта. Это делается, чтобы избежать повторных ссылок на объект в последующих операторах. Например, вместо того чтобы, обращаясь к ячейки объекта StringGrid1 писать StringGrid1. Cells[I, J], удобнее использовать оператор withStringGrid1 do, в теле которого можно неоднократно обращаться к Cells[I, J], не упоминая имени объекта StringGrid1.


Процедура обработки события кнопки Button1:


Procedure TForm1. Button1Click (Sender: TObject);


{заполнениемассива}


begin


randomize;


with StringGrid1 do


begin


I:= 0;


For J:= 1 to RowCount – 1 do
{вывестиномерастрок}


Cells [I, J]:= IntToStr(J);


J:= 0;


For I:= 1 to ColCount – 1 do
{вывестиномерастолбцов}


Cells [I, J]:= IntToStr(I);


End
;


With
StringGrid
1
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
;


7. Создайте процедуру обработки массива для второй кнопки «Вычислить». Введите текст процедуры:


procedure
TForm
1.
Button
2
Click
(
Sender
:
TObject
);
{обработка массива}


var


min, max: integer;


begin


if CheckBox1. Checked then


with StringGrid1 do


begin


min:= StrToInt (Cells [1,1]);


for I:=1 to colCount – 1 do


for J:= 1 to RowCount – 1 do


if StrToInt (Cells [I, J]) < min then min:= StrToInt (Cells [I, J]);


Edit1. Text:= IntToStr (min);


End


Else Edit1. Text
:= ‘’; …


(Определение максимального записать самостоятельно аналогично первой части модуля).


End
;


Приложение:
Текст программы файла модуля.


unit main
;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;


Type
TForm1 = class(TForm)


StringGrid1: TStringGrid;


Button1: TButton; Button2: TButton;


GroupBox1: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox;


Edit1: TEdit; Edit2: TEdit;


procedure Button1Click (Sender: TObject);


procedure Button2Click (Sender: TObject);


private {Private declarations}


public {Public declarations}


end;


var
Form1: TForm1; i, j: integer;


implementation {$R *.dfm}


procedure TForm1. Button1Click (Sender: TObject);


begin Randomize;


with StringGrid1 do begin i:=0;


for j:=1 to RowCount‑1 do Cells [i, j]:=IntToStr(j);


j:=0;


for i:=1 to ColCount‑1 do Cells [i, j]:=IntToStr(i); end;


with StringGrid1 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;


procedure TForm1. Button2Click (Sender: TObject);


var min, max:integer;


begin


if CheckBox1. Checked then


with StringGrid1 do begin


min:=StrToInt (Cells[1,1]);


for i:=1 to ColCount‑1 do


for j:=1 to RowCount‑1 do


if StrToInt (Cells[i, j])<min then min:=StrToInt (Cells[i, j]);


Edit1. Text:=IntToStr(Min);


End else Edit1. Text:='';


if CheckBox2. Checked then


with StringGrid1 do begin


max:=StrToInt (Cells[1,1]);


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:='';


end; end.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Создание и обработка линейного массива

Слов:1399
Символов:13561
Размер:26.49 Кб.