Здравствуйте ! Помогите пожалуйста с задачей:
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу:
а) умножением элементов каждой строки 1-й матрицы на наибольшее из значений элементов соответствующей строки второй матрицы;
б) прибавлением к элементам каждого столбца 1-й матрицы произведения элементов соответствующих строк второй матрицы
Вот примерно что я сделал: создаю две таблицы StringGrid1 и StringGrid2 которые заполняются с помощью генератора случ. чисел.
Теперь моя главная проблема чтобы при нажатие Button 2 или Button 3 выполнялось условие (а),
а результат выводился в третию таблицу StringGrid3, и так же для условия (б),результат выводтится но не тот.
Вот примерный код:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid3: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
n=3;
var
Form1: TForm1;
a,b: array[0..n,0..n] of integer;
i,j:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
for j:=0 to n do
begin
for i:=0 to n do
begin
a[i,j]:=random(15);
stringgrid1.Cells[i,j]:=inttostr(a[i,j]);
b[i,j]:=random(15);
stringgrid2.Cells[i,j]:=inttostr(b[i,j]);
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject); {выполняю условие а}
var i,j,k,max:integer;
begin
begin
for i:=0 to n do
begin
max:=b[i,1];
for j:=0 to n do
if b[i,j]> max then max:=b[i,j]; {ищем максимальное в строке второй матрицы}
for k:=1 to n do
a[i,k]:=a[i,k]*max; {умножаем элементы строки первой матрицы}
for i:=0 to n do
for j:=0 to n do
StringGrid3.Cells[i,j]:=IntToStr(b[i,j]);
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject); {Выполняю условие б}
var i,j,k,p:integer;
begin
begin
for i:=0 to n do
begin
p:=1;
for j:=1 to n do
p:=p*b[i,j]; {считаем призведение в строке второй матрицы}
for k:=1 to n do
a[i,k]:=a[i,k]+p; {прибавляем к элементам строки первой матрицы}
for i:=0 to n do
for j:=0 to n do
StringGrid3.Cells[i,j]:=IntToStr(a[i,j]);
end;
end;
end;
end.
Admin: Пользуемся тегами, иначе последуют санкции!