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

I : Integer; //параметр цикла, индекс

Code : Integer; //код ошибки

StrN, StrI : String [10];

Kol : Integer;

Begin

StrN : =edtSizeVector.Text;

Val ( StrN,n,Code );

if ( Code <> 0 ) or ( N > MaxSizeVector) then

begin

MessageDlg ( StrN+' - Ошибка в задании размера вектора',

mtError, [mbOk], 0);

edtSizeVector.SetFocus;

end

else

begin

edtVector.Text := edtVector.Text +' ';

Kol := 0;

for i := 1 to Length ( edtVector.Text )-1 do

if ( edtVector.Text[i]=' ') and ( edtVector.Text[i+1] <>' ') then Kol:=Kol+1;

if edtVector.Text[1] <>' ' then Kol := Kol+1;

if Kol < N then

begin

MessageDlg ('Число элементов вектора меньше '+#13+

'заданного размера вектора', mtError, [mbOk], 0);

edtVector.SetFocus;

Exit;

end;

if Kol > N then

begin

MessageDlg ('Число элементов вектора больше '+#13+

'заданного размера вектора', mtError, [mbOk], 0);

edtVector.SetFocus;

exit;

end;

for i := 1 to N do

begin

StrI := SelectNumber (edtVector.Text, i);

Val (StrI, V[I], Code);

if Code <> 0 then

begin

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

mtError, [mbOk], 0);

edtVector.SetFocus;

exit

end

end;

MessageDlg ('Количество введенных элементов равно ' +StrN,

mtInformation, [mbOk], 0);

btnVectorWork.Enabled := True;

end;

End;

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

procedure TForm1.btnMatrixClick(Sender: TObject);

var

I , j : Integer;

StrRow, StrColumn : string[5];

Code : Integer;

Stroka, StrJ : string;

Begin

StrRow := edtSizeRow.Text;

Val ( StrRow, SizeRow, Code);

if ( Code <> 0 ) or ( SizeRow > MaxSizeRow ) then

begin

MessageDlg (' '+StrRow+#13+' Ошибка в задании'+

#13+'числа строк матрицы', mtError, [mbOK], 0);

edtSizeRow.SetFocus;

exit;

end;

StrColumn := edtSizeColumn.Text;

Val ( StrColumn, SizeColumn, Code );

if ( Code <> 0) or ( SizeColumn > MaxSizeColumn) then

begin

MessageDlg ( StrColumn+#13+'Ошибка в задании числа столбцов',

mtError, [mbOK], 0);

edtSizeColumn.SetFocus;

exit;

end;

if memoMatrix.Lines.Count < SizeRow then

begin

MessageDlg ( StrRow+#13+'Число строк матрицы меньше заданного',

mtError, [mbOK], 0);

edtSizeRow.SetFocus;

exit;

end;

while ( memoMatrix.Lines.Count <> 0) and

( Trim ( memoMatrix.Lines[memoMatrix.Lines.Count - 1]) = '') do

memoMatrix.Lines.Delete(memoMatrix.Lines.Count - 1);

if memoMatrix.Lines.Count > SizeRow then

begin

MessageDlg ( StrRow+#13+'Число строк матрицы больше заданного',

mtError, [mbOK], 0);

edtSizeRow.SetFocus;

exit;

end;

for i := 0 to SizeRow-1 do

begin

Stroka := memoMatrix.Lines[i] + ' ';

for j := 0 to SizeColumn-1 do

begin

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