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

Val ( StrJ,a[I,j],Code);

if Code<>0 then

if StrJ <> '' then

begin

MessageDlg ( StrJ+' - неправильное целое число',

mtError, [mbOk], 0);

memoMatrix.SetFocus;

Exit;

end

else

begin

MessageDlg ( 'Число элементов в '+IntToStr ( i+1)+

'-й строке матрицы меньше заданного',

mtError,[mbOk],0);

memoMatrix.SetFocus;

Exit;

end;

end;

StrJ:=SelectNumber ( Stroka, SizeColumn+1);

if StrJ <> '' then

begin

MessageDlg ( 'Превышено число элементов в '+IntToStr(i+1)+

'-й строке матрицы', mtError, [mbOk], 0);

memoMatrix.SetFocus;

Exit;

end;

end;

btnMatrixWork.Enabled := True;

end;

Обработчик события “активизация формы ” выводит подсказку пользователю о максимальном размере вектора и обеспечивает установку курсора в поле редактирования edtSizeVector, куда ввод должен быть осуществлен в первую очередь.

procedure TForm1.FormActivate(Sender: TObject);

begin

Label2.Caption := 'Размер вектора (<='+IntToStr(MaxSizeVector)+')';

edtSizeVector.SetFocus;

end;

Обработчик события “щелчок на кнопке “ Работа с вектором” обеспечивает подсчет суммы его элементов и контрольный вывод элементов массива с указанием их номеров :

procedure TForm1.btnVectorWorkClick(Sender: TObject);

var

Summa : Integer;

I : Integer;

begin

Summa := 0;

for i := 1 to N do

Summa := Summa+V[i];

Label5.Caption := 'Сумма='+IntToStr(Summa)+#13#13+

'Исходный вектор'+#13+' # Число'+#13+' ';

for i: = 1 to N do

Label5.Caption := Label5.Caption+IntToStr(i)+' '+

SelectNumber ( edtVector.Text,i)+#13+' ';

edtSizeVector.SetFocus;

end;

Обработчик события “изменения в поле edtVectorChange делает кнопку “Работа с вектором “ недоступной для пользователя.

procedure TForm1.edtVectorChange(Sender: TObject);

begin

btnVectorWork.Enabled := False;

end;

Обработчик события “ изменения в поле memoMatrix” обеспечивает недоступность кнопки “Транспонированная матрица” и делает невидимым поле memoTransposed.

procedure TForm1.memoMatrixChange(Sender: TObject);

begin

btnMatrixWork.Enabled := False;

memoTransposed.Visible := False;

end;

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

procedure TForm1.btnMatrixWorkClick(Sender: TObject);

var

I, j, t : Integer;

sum : Integer;

begin

for i := 0 to MaxSizeRow - 1 do

for j := i + 1 to MaxSizeColumn do

begin

t := A[i,j];

A[i,j] := A[j,i];

A[j,i] := t;

end;

t := SizeColumn;

SizeColumn := SizeRow;

SizeRow := t;

Sum := 0;

with memoTransposed do

begin

Clear;

for i := 0 to SizeRow - 1 do

begin

for j := 0 to SizeColumn - 1 do

begin

Lines.Text := Lines.Text + IntToStr(A[i,j]) + ' ';

Sum := sum + A[i,j];

end;

Lines.Text := Lines.Text + #13;

end;

ShowMessage ( 'Сумма элементов матрицы = '+IntToStr(Sum));

Visible := True;

end;

end;

Обработчик события “изменения в поле edtSizeVector” обеспечивает недоступность для пользователя кнопки “Работа с вектором”.

procedure TForm1.edtSizeVectorChange(Sender: TObject);

begin

btnVectorWork.Enabled := False;

end;

Обработчик события “ изменения в поле edtSizeChange” делает недоступным кнопку “ Транспонированная матрица” .

procedure TForm1.edtSizeChange(Sender: TObject);

begin

btnMatrixWork.Enabled := False;

end;

Результат работы приложения «Ввод-вывод элементов вектора и матрицы» показан на рис. 19.

Рис.19. Результат работы приложения «Ввод-вывод элементов вектора и матрицы»