Перед созданием очередной заготовки процедуры необходимо переместить курсор в начало пустой строки, следующей после end; (т.е. в начало строки очередной заготовки).
В каждую из 4-х полученных заготовок введем операторы, реализующие нужные алгоритмы. 1. В процедуре TForm1.FormCreate присвоим начальные значения 1 переменным i, j, определяющим соответственно номера строк и столбцов массива а, и переменным k, l, определяющим номера строк и столбцов массива b. Отображение в строке Edit1.Text подсказки ’’a[1,1]=’’ реализуем оператором присваивания: Edit1.Text:= ’a[’+IntToStr(i)+’,’+IntToStr(j)+’]=’; Текст процедуры может выглядеть так: procedure TForm1.FormCreate(Sender: TObject); begin i:=1;j:=1;k:=1;l:=1; Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']='; end;
2. В процедуре TForm1.Button1Click (Sender: TObject) запишем операторы,реализующие: - присвоение элементу массива a числа, введенного в строке Edit2.Text; - отображение в строке Edit1.Text подсказки очередного вводимого элемента матрицы a; - нужные изменения значений переменных i, j, обеспечивающие «построчный» ввод элементов матрицы a; - отображение в Мемо1 текста «Элементы матрицы А введены», а в строке Edit1. Text - подсказки «b[1,1] =» о начале ввода элементов матрицы В. Условием отображения этой информации является равенство i =5. Текст процедуры может выглядеть так: procedure TForm1.Button1Click(Sender: TObject); begin if i<5 then begin a[i,j]:=StrToFloat(Edit2.Text); Memo1.Lines.Add('a['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(a[i,j])); if i<=4 then j:=j+1; if j>4 then begin i:=i+1;j:=1; end; if i<5 then Edit1.Text:=’a[‘+IntToStr(i)+’,’+ IntToStr(j)+’]=’; end else begin Memo1.Lines.Add(‘Элементы матрицы А введены’); Edit1.Text:=’b[‘+IntToStr(k)+’,’+IntToStr(l)+’]=’; end; end;
3. Аналогично в процедуре TForm2.Button2Click (Sender: TObject) запишем операторы, реализующие: - присвоение элементу массива b числа, введенного в строке Edit2.Text; - отображение в строке Edit1.Text подсказки очередного вводимого элемента матрицы b; - нужные изменения значений переменных l, k, обеспечивающие «построчный» ввод элементов матрицы b; - отображение в Мемо1 текста «Элементы матицы В введены». Условием отображения этой информации является равенство k =5. Текст процедуры может выглядеть так: procedure TForm1.Button2Click(Sender: TObject); begin if k<5 then begin b[k,l]:=StrToFloat(Edit2.Text); Memo1.Lines.Add('b['+IntToStr(k)+','+IntToStr(l)+']='+FloatToStr(b[k,l])); if k<=4 then l:=l+1; if l>4 then begin k:=k+1; l:=1; end; if i<5 then Edit1.Text:=’b[‘+IntToStr(k)+’,’+ IntToStr(l)+’]=’; end else Memo1.Lines.Add(‘Элементы матрицы В введены’); end;
4. В процедуре TForm1.Button3Click (Sender: TObject) запишем операторы, реализующие: - очистку строк редактора Memo1, которая производится стандартной процедурой Clear (Очистить); - вычисления элементов матрицы C по формуле (5); - отображение в строках редактора Memo1 значений элементов матрицы C. Текст процедуры:
procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Lines.Clear; For i:=1 to 4 do for j:=1 to 4 do begin c[i,j]:=0.0; for k:=1 to 4 do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; Memo1.Lines.Add('c['+IntToStr(i)+','+IntToStr(j)+']='+floatToStr(c[i,j])); end; end;
5. Областью видимости переменных i, j, l, k и массивов a, b, c, называется связь места их описания(объявления) в модуле и места их использования. Дадим их описания в интерфейсном разделе модуля, сделав их видимыми и доступными внутри модуля (из всех процедур-обработчиков событий) и из внешних модулей: … var Form1: TForm1; i, j, l, k: integer; a, b, c: array[1..4,1..4] of real; … Тогда окончательно получим текст модуля:
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; i,j,l,k: integer; a,b,c: array[1..4,1..4] of real; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin i:=1;j:=1;k:=1;l:=1; Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']=';
end;
procedure TForm1.Button1Click(Sender: TObject); begin if i<5 then begin a[i,j]:=StrToFloat(Edit2.Text); Memo1.Lines.Add('a['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(a[i,j])); if i<=4 then j:=j+1; if j>4 then begin i:=i+1; j:=1; end; if i<5 then Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']='; end else begin Memo1.Lines.Add('Элементы матрицы А введены'); Edit1.Text:='b['+IntToStr(k)+','+IntToStr(l)+']='; end; end;
procedure TForm1.Button2Click(Sender: TObject); begin if k<5 then begin b[k,l]:=StrToFloat(Edit2.Text); Memo1.Lines.Add('b['+IntToStr(k)+','+IntToStr(l)+']='+FloatToStr(b[k,l])); if k<=4 then l:=l+1; if l>4 then begin k:=k+1; l:=1; end; if k<5 then Edit1.Text:='b['+IntToStr(k)+','+IntToStr(l)+']='; end else Memo1.Lines.Add('Элементы матрицы В введены'); end;
procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Lines.Clear; for i:=1 to 4 do for j:=1 to 4 do begin c[i,j]:=0.0; for k:=1 to 4 do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; Memo1.Lines.Add('c['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(c[i,j])); end; end;
end.
|