Страница 1 из 1

Delphi: арифметика матриц

Добавлено: 15 дек 2009, 18:43
filru
Собственно сама задачка звучит так:
Даны две квадратные целочисленные матрицы a и b размера 3х3. Создать приложение с главным меню для выбора одной из трёх команд, позволяющих найти
5*a + b
a – 2*b
2* a * b
У меня получилась вот такая процедура, но она не правильно считает:

Код: Выделить всё

procedure TForm1.N2ab1Click(Sender: TObject);
begin
for i:=0 to 2 do
for j:=0 to 2 do begin s:=0;
for k:=0 to 2 do
s:=s+2*((strtoint(stringgrid1.cells[i,k]))*(strtoint(stringgrid2.cells[k,j])));
stringgrid3.cells[i,j]:=inttostr(s);
end;
end;
Помогите пожалуйста решить правильно задачку

Re: Delphi: Помогите наити ошибку в решений задачи

Добавлено: 16 дек 2009, 04:27
BHy4ok
Исходники прикреплены.
[syntax=Delphi]
procedure list1;
var
i,j:integer;
begin
for I := 0 to Form1.StringGrid1.ColCount-1 do
for j := 0 to Form1.StringGrid1.RowCount-1 do
Form1.StringGrid3.Cells[i,j]:=IntToStr((5*StrToInt(Form1.StringGrid1.Cells[i,j]))+StrToInt(Form1.StringGrid2.Cells[i,j]));
end;

procedure list2;
var
i,j:integer;
begin
for I := 0 to Form1.StringGrid1.ColCount-1 do
for j := 0 to Form1.StringGrid1.RowCount-1 do
Form1.StringGrid3.Cells[i,j]:=IntToStr(StrToInt(Form1.StringGrid1.Cells[i,j])-(2*StrToInt(Form1.StringGrid2.Cells[i,j])));
end;

procedure list3;
var
i,j:integer;
begin
for I := 0 to Form1.StringGrid1.ColCount-1 do
for j := 0 to Form1.StringGrid1.RowCount-1 do
Form1.StringGrid3.Cells[i,j]:=IntToStr(2*StrToInt(Form1.StringGrid1.Cells[i,j])*StrToInt(Form1.StringGrid2.Cells[i,j]));
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
i,j:integer;
begin
Randomize;
for I := 0 to StringGrid1.ColCount-1 do
for j := 0 to StringGrid1.RowCount-1 do
begin
StringGrid1.Cells[i,j]:=IntToStr(random(50)-10);
StringGrid2.Cells[i,j]:=IntToStr(random(50)-10);
end;
if ListBox1.ItemIndex=0 then
list1 else
if ListBox1.ItemIndex=1 then
list2 else
list3;
end;
[/syntax]

Исходники: Скачать