Программирование в среде Delphi. Практикум к лабораторным работам по курсу «Информатика», страница 4

Разработать приложение, позволяющее подсчитать количество чисел, не принадлежащих промежутку (X,Y] и стоящих на четных местах в одномерном массиве вещественных чисел. В главной форме должны находиться таблица с одним столбцом или строкой, поле ввода размера массива, поля ввода величин X и Y, поля вывода результатов, кнопка «Решение», кнопка «О программе», кнопка «Выход».

Дополнительно введем кнопку «Установить размер массива», при нажатии на нее устанавливается новое значение свойства ColCount компонента StringGrid.

При нажатии кнопки «Решение» программа должна считать значения элементов массива, величин X и Y, вычислить значения результата и поместить их в поле вывода. Разработчик программы должен предусмотреть проверку значения аргумента на корректность ввода вещественного числа. При возникновении ошибки выполнения используем метод Application.MessageBox, а также конструкцию языка программирования try ... except.

Вставляем в пустую форму компонент Edit1 для ввода размера массива, компонент Edit2 для ввода значения X, компонент Edit3 для ввода значения Y, четыре кнопки Button1-Button4 для запуска соответствующих процедур, таблицу StringGrid1 для ввода одномерного массива, компонент Edit4 для вывода результата.

Форма приложения с исходными данными и результатами расчета показана на рис. 2.6.

Формируем процедуры обработки нажатия кнопок и компилируем программу. Текст модуля приводим ниже:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, Grids, StdCtrls, ExtCtrls, TeeProcs,

TeEngine;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

StringGrid1: TStringGrid;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit4: TEdit;

procedure FormCreate(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

var

X, Y : real;   // границы диапазона

A : array [1..30] of real;   // одномерный массив

N  : integer;  // Размер массива

Kol  : integer;   // Результат

// процедура формирования заголовка таблицы

procedure TForm1.FormCreate(Sender: TObject);

var i : integer;

begin

for i:=1 to 30 do

StringGrid1.Cells[i-1,0]:= IntToStr(i);

end;

// процедура закрытие приложения

procedure TForm1.Button4Click(Sender: TObject);

begin

Close

end;

// процедура обработки кнопки "О программе"

procedure TForm1.Button3Click(Sender: TObject);

begin

Application.MessageBox('Программу выполнила студентка'+

' группы Д-11 Сычева Л.Н.','О программе')

end;

// процедура обработки кнопки "Решение"

procedure TForm1.Button1Click(Sender: TObject);

var   i : integer;

begin

try

X:=StrToFloat(Edit2.Text);

Y:=StrToFloat(Edit3.Text);

for i:=1 to N do

A[i]:=StrToFloat(StringGrid1.Cells[i-1,1]);

except

Application.MessageBox('Ошибка в данных!',

'Критическая ошибка');

Exit;  // выход из процедуры

end;

Kol:=0;

i:=2;

while i<=N do  // цикл подсчета количества

begin

if (A[i]<=X)or(A[i]>Y) then

Kol:=Kol+1;

i:=i+2;

end;

Edit4.Text:=IntToStr(Kol);

end;

// процедура установки размера массива

procedure TForm1.Button2Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

StringGrid1.ColCount:=n;

end;

end.

Рис. 2.6. Программа обработки одномерного массива

2.8. Выделение минимального и максимального элементов           массива

Разработать приложение, позволяющее поменять местами максимальный и минимальный элементы одномерного массива. В главной форме должны находиться две таблицы с одним столбцом или строкой, поле ввода размера массива, кнопка «Установить размер массива», кнопка «Решение», кнопка «О программе», кнопка «Выход».