Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
семинар 3 массивы (1).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
131.58 Кб
Скачать

Interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

const

MaxSizeRow=10; MaxSizeColumn=10; //Максимальные размеры матрицы

MaxSizeVector=15; //Максимальный размер вектора

type

TForm1 = class(TForm)

edtVector: TEdit;

btnVector: TButton;

Label1: TLabel;

btnMatrix: TButton;

memoMatrix: TMemo;

edtSizeVector: TEdit;

Label2: TLabel;

Label3: TLabel;

edtSizeRow: TEdit;

Label4: TLabel;

edtSizeColumn: TEdit;

Label5: TLabel;

Label6: TLabel;

btnVectorWork: TButton;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

btnMatrixWork: TButton;

memoTransposed: TMemo;

procedure btnVectorClick(Sender: TObject);

procedure btnMatrixClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure btnVectorWorkClick(Sender: TObject);

procedure edtVectorChange(Sender: TObject);

procedure memoMatrixChange(Sender: TObject);

procedure btnMatrixWorkClick(Sender: TObject);

procedure edtSizeVectorChange(Sender: TObject);

procedure edtSizeChange(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

tVector = array [1..MaxSizeVector] of Integer;

tMatrix = array [0..MaxSizeRow,0..MaxSizeColumn]of Integer;

var

Form1: TForm1;

A : tMatrix;

V : tVector;

SizeRow,SizeColumn : Integer; //Реальные количества строк и столбцов

N : Integer; //Реальный размер вектора

Implementation

{$R *.DFM}

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

Функция пользователя SelectNumber осуществляет анализ считанной строки на наличие пробелов и производит выделение очередного числа. Предопределенная переменная Result является внутри функции синонимом ее наименования :

function SelectNumber ( St:string; Number:Integer ) : string;

var

I, p : Integer;

Вegin

//Удаление пробелов в начале строки

if St = '' then exit;

while St[1] = ' ' do

begin

Delete(St,1,1);

if St = '' then break;

end;

//Выделение подстроки под номером Number

for i := 1 to Number-1 do

begin

Delete ( St,1,Pos(' ',St));

if St = '' then break;

while St[1]=' ' do

begin

Delete ( St,1,1);

if st = '' then break;

end

end;

P := Pos (' ',St);

if P <> 0 then

Result := Copy ( St,1,P-1)

else

Result := St;

End;

Обработчик события “нажатие на кнопку “Ввод” обеспечивает считывание из полей редактирования размера вектора, его элементов и контролирует правильность их ввода. Обработчик использует функцию SelectNumber и метод SetFocus, осуществляющий позиционирование курсора в соответствующие поля редактирования:

procedure TForm1.btnVectorClick (Sender: TObject);

var