|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с квадратными матрицами
Здравствуйте ! Помогите пожалуйста с задачей:
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу прибавлением к элементам каждого столбца 1-й матрицы произведения элементов соответствующих строк 2-й матрицы. Сидел ломал голову, вроде все сделал но в чем-то есть ошибка, числа считает не правильно. Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Math, StdCtrls, Spin, Grids; type TForm1 = class(TForm) G1: TStringGrid; Button1: TButton; SpinEdit1: TSpinEdit; Label1: TLabel; G2: TStringGrid; Label2: TLabel; Label3: TLabel; G3: TStringGrid; Button2: TButton; procedure FormCreate(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } N : integer; function UMN(k : integer) : integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end; procedure TForm1.SpinEdit1Change(Sender: TObject); var i, j : integer; G : TStringGrid; begin N := SpinEdit1.Value; for i := 0 to ControlCount - 1 do if Controls[i] is TStringGrid then begin G := (Controls[i] as TStringGrid); G.ColCount := N; G.RowCount := G.ColCount; for j := 0 to N - 1 do begin G.Cols[j].Clear; G.ColWidths[j] := Round(G.RowHeights[0] * 1.5); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var i, j : integer; begin for i := 0 to N - 1 do for j := 0 to N - 1 do begin G1.Cells[j, i] := IntToStr(RandomRange(1, 10)); G2.Cells[j, i] := IntToStr(RandomRange(1, 10)); end; Button2.Enabled := true; end; procedure TForm1.Button2Click(Sender: TObject); var i, j, k : integer; begin for i := 0 to N - 1 do begin k := UMN(i); for j := 0 to N - 1 do G3.Cells[j, i] := IntToStr(StrToInt(G1.Cells[j, i]) * k); end; end; function TForm1.UMN(k: integer): integer; var i:integer; pr:real; begin pr:=1; For i:=0 to G2.ColCount-1 do pr:=pr*StrToFloat(G2.Cells[i,1]) end; end. |