Упражнение по созданию и обработке линейного массива

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

Создайте форму, для свойства Caption задайте значение «Создание и обработка массива». На форме разместите компоненты Editl и Edit2, кнопку Buttonl, для свойства Caption кнопки задайте значение «Создать массив». Разместите на форме панель GroupBoxl, для свойства Caption которой задайте значение «Определить».

В панели GroupBoxl разместите компоненты CheckBoxl, CheckBox2, CheckBox3 и CheckBox4, для свойств Caption которых задайте значения: «Минимальный элемент», «Максимальный элемент», «Сумма всех элементов», «Число положительных элементов», соответственно. Напротив них разместите компоненты Edit3, Edit4, Edit5 и Edit6. Если компоненты CheckBoxl, CheckBox2, СhескВохЗ, CheckBox4 окажутся размещенными под панелью GroupBoxl и не будут отображаться, то следует выделить панель GroupBoxl и выбрать в контекстном меню команду Control – Send to Back (Порядок – На задний план). В нижней части формы разместите кнопку Buttonl и задайте значение свойства Buttonl. Caption – «Вычислить». Удалите текст Editl, Edit2, Edit3, Edit4, Edit5, Edit6 из соответствующих компонентов. Выровняйте компоненты на форме. Зафиксируйте положение компонентов на форме, выбрав в меню Delphi команду Edit – Lock Controls.

Сохраните файл проекта и программного модуля.

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

var
Forml: TForml;
N, I : integer;
M : array of integer; {описание динамического массива целых чисел}

Для предупреждения ввода в окно Editl нечислового значения реализуем обработку события нажатия на клавишу в окне Editl, чтобы запретить ввод любых символов, кроме цифр от 0 до 9. Для создания процедуры обработчика события нажатия на клавишу в окне Editl выберите в окне Инспектора объектов компонент Editl и на странице Events (События) дважды щелкните левой кнопкой мыши на пустом поле списка в событии On Key Press. После этого окно Редактора кода немедленно получит фокус и в разделе interface появится запись процедуры обработчика события:

procedure EditlKeyPress(Sender: TObject; var Key: Char);

а в разделе implementation – текст заготовки этой процедуры:

procedure EditlKeyPress(Sender: TObject; var Key: Char);
begin
end;

Вставьте в тело процедуры следующий оператор:

if not (Key in [‘0’..’9′]) then Key:=#0;

Действие этого оператора сводится к сравнению значения переменной Key с множеством значений [‘0’..’9′]. Если символ нажатой клавиши не входит в это множество, то Key присваивается значение нулевого символа (#0). Таким образом, в окне Editl будет отображаться текст, состоящий только из цифр.

Создание массива целых чисел опишите в процедуре обработчика события щелчка мышью на кнопке Buttonl. Для создания процедуры обработчика события выберите в окне Инспектора объектов объект Buttonl, затем на странице События сделайте двойной щелчок на пустом поле списка в событии OnClick. После этого отредактируйте заготовку процедуры обработчика события procedure TForml.ButtonlQick(Sender: TObject); в окне Редактора кода следующим образом:

procedure TForml.ButtonlClick(Sender: TObject);
begin
Randomize;
N:=StrToInt(Editl.Text); {число элементов массива}
SetLength(M, N); {задать массиву М длину N}
Edit2.Text:=»; {очистить окно Edit2}
for I := 0 to N-l do {заполнить массив случайными значениями целых чисел}
begin M[I]:= Round(Sin(Random(100))*100);
{присвоить элементу массива случайное значение}
Edit2.Text:=Edit2.Text+’ ‘+IntToStr(M[I]);
{вывести элементы массива}
end;
end;

Обработку массива опишите в процедуре обработчика события щелчка мышью на кнопке Button2. Для этого выберите в окне Инспектора объектов объект Button2, затем на странице События сделайте двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода в заготовку процедуры обработчика события procedure TForml.Button2Click(Sender: TObject); в раздел описания локальных переменных поместите следующее описание:

var Max, Min. Sum, CountPlus : integer; {результаты обработки массива}

где

Мах – максимальный элемент массива,
Min – минимальный элемент массива,
Sum – сумма всех элементов массива,
CountPlus – количество положительных элементов массива.

Обработку массива можно реализовать с помощью цикла For, в котором вычисление значения каждой из этих переменных записывается при помощи оператора if then, проверяющим условие CheckBox.Checked. Если свойство Checked имеет значение True, то выполняется вычисление соответствующей переменной. В заключительной части процедуры можно разместить вывод результатов обработки массива. Текст процедуры обработки массива может быть записан следующим образом:

procedure TForml.Button2Click(Sender: TObject); {обработка массива}
var
Max, Min, Sum, CountPlus : integer; {результаты обработки массива}
begin
if CheckBoxl.Checked then Min:=M[0]; {пусть 0-й элемент — Min}
Edit3.Text: = «;
if CheckBox2.Checked then Max:=M[0]; {пусть 0-й элемент — Max}
Edit4.Text: = «;
Sum:=0; {обнулить значения Sum}
Edit5.Text: = «;
CountPlus;=0; {обнулить значения суммы положительных элементов}
Edit6.Text: = «;
for I:=0 to N-l do
begin
if CheckBoxl.Checked then {определить минимальный элемент массива}
if Min>M[I] then Min:=M[I];
if CheckBox2.Checked then {определить максимальный элемент массива}
if Max<M[I] then
Max:=M[I];
if CheckBox3.Checked then {суммировать элементы массива}
Sum:=Sum+M[I];
if CheckBox4.Checked then {суммировать положительные элементы массива}
if M[I]>0 then
CountPlus:=CountPlus+l:
end;
{вывести результаты обработки массива}
if CheckBoxl.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;

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

Выбирая варианты обработки массива установкой соответствующих флажков CheckBox и щелкая мышью на кнопке Вычислить, убедитесь в правильности работы процедуры обработки массива.

Закройте окно приложения.

Добавить комментарий