При нажатии кнопки «Решение» программа должна считать значения элементов массива из одной таблицы, найти минимальное и максимальное число, произвести обмен над элементами и поместить результирующий массив в другую таблицу. Разработчик программы должен предусмотреть проверку значения аргумента на корректность ввода исходных данных. При возникновении ошибки выполнения использовать функцию метод Application.MessageBox, а также конструкцию языка программирования try ... except. Поиск минимального или максимального элемента оформить в виде подпрограммы.
Вставляем в пустую форму компонент Edit1 для ввода размера массива, четыре кнопки Button1-Button4 для запуска соответствующих процедур, таблицу StringGrid1 для ввода одномерного массива, таблицу StringGrid2 для вывода результирующего массива.
Форма приложения с исходными данными и результатами расчета показана на рис. 2.7.
Формируем процедуры обработки нажатия кнопок и компилируем программу. Текст модуля приводим ниже:
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;
Edit1: TEdit;
StringGrid1: TStringGrid;
Label2: TLabel;
StringGrid2: TStringGrid;
Label3: TLabel;
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}
Type
massiv = array [1..30] of real;
var
A : massiv; // одномерный массив
N : integer; // Размер массива
// функция поиска номера максимального числа в массиве
Function NomerMax(B : massiv; M : integer): integer;
var i : integer; Max : real;
begin
Max:=B[1];
for i:=2 to M do
if Max<B[i] then
begin
Max:=B[i];
NomerMax:=i;
end;
end;
// функция поиска номера минимального числа в массиве
Function NomerMin(B : massiv; M : integer): integer;
var i : integer; Min : real;
begin
Min:=B[1];
for i:=2 to M do
if Min>B[i] then
begin
Min:=B[i];
NomerMin:=i;
end;
end;
// процедура формирования заголовков таблиц
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
for i:=1 to 30 do
begin
StringGrid1.Cells[i-1,0]:= IntToStr(i);
StringGrid2.Cells[i-1,0]:= IntToStr(i);
end;
end;
// процедура закрытие приложения
procedure TForm1.Button4Click(Sender: TObject);
begin
Close
end;
// процедура обработки кнопки "О программе"
procedure TForm1.Button3Click(Sender: TObject);
begin
Application.MessageBox('Программу выполнила студентка'+
'группы Д-12 Соколова Ю.А.','О программе')
end;
// процедура обработки кнопки "Решение"
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
temp: real; // временная переменная
begin
try
for i:=1 to N do
A[i]:=StrToFloat(StringGrid1.Cells[i-1,1]);
except
Application.MessageBox('Ошибка в данных!',
'Критическая ошибка');
Exit; // выход из процедуры
end;
// обмен чисел
temp:=A[NomerMax(A,N)];
A[NomerMax(A,N)]:=A[NomerMin(A,N)];
A[NomerMin(A,N)]:=temp;
// вывод результирующего массива
for i:=1 to N do
StringGrid2.Cells[i-1,1]:=FloatToStr(A[i]);
end;
// процедура установки размера массива
procedure TForm1.Button2Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
end;
end.
Рис. 2.7. Поиск минимального или максимального числа в массиве
2.9. Простейшие приемы работы с двумерными массивами
Разработать приложение, позволяющее вычислить сумму квадратов отрицательных элементов, стоящих в столбцах и строках с четными номерами. В главной форме должны находиться таблица размером N´M, поля ввода размера массива, поле вывода результата, кнопка «Установить размер массива», кнопка «Решение», кнопка «О программе», кнопка «Выход».
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.