|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Доработать программу (Работа с матрицами и stringgrid)
Нужно в матрице 5х5 которая считывается из стринггрид1 найти скалярное произведение каждой строки на главную диагональ и вывести в вектор который записывается в стринггрид2. Нужно добавить к выводимому результату умножение на побочную диагональ суму элементов каждой строки я нашел
Код:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls; type TForm1 = class(TForm) StringGrid1: TStringGrid; StringGrid2: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const n = 5; implementation {$R *.dfm} Type Matrix = array [1 .. 5, 1 .. 5] of real; vect = array [1 .. 5] of integer; Var a: Matrix; s: real; procedure TForm1.Button1Click(Sender: TObject); var sm, smax, sd: string; j, i, ier, imax, jmax: integer; max: real; begin for j := 0 to 4 do begin for i := 0 to 4 do if Length(StringGrid1.Cells[i ,j]) <> 0 then a[i, 1] := strtofloat(StringGrid1.Cells[i ,j]) else a[i, j] := 0; end; for i := 0 to n-1 do begin s := 0; for j := 0 to n-1 do begin s := s + strtofloat(StringGrid1.Cells[j, i])*strtofloat(StringGrid1.Cells[n - j + 1, j]); //strtofloat(StringGrid1.Cells[n - j + 1, j]); end; StringGrid2.Cells[i, 1] := floattostr(s); end; end; procedure TForm1.Button2Click(Sender: TObject); var j, i: integer; begin for i := 0 to n-1 do for j := 0 to n-1 do StringGrid1.Cells[j, i] := inttostr(random(10)); for j := 0 to 4 do StringGrid2.Cells[j , 1] := ''; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; end. |
#2
|
|||
|
|||
Помогите пожалуйста. Куча просмотров и ни одного ответа
|
#3
|
||||
|
||||
Цитата:
Алгоритм хотя бы можете описать что нужно, например ячейки в матрице Код:
r1c1 r1c2 r1c3 r1c4 r1c5 r2c1 r2c2 r2c3 r2c4 r2c5 r3c1 r3c2 r3c3 r3c4 r3c5 r4c1 r4c2 r4c3 r4c4 r4c5 r5c1 r5c2 r5c3 r5c4 r5c5 Код:
r1c1 + r1c2 + r1c3 + r1c4 + r1c5 = сумма горизонтальных ячеек в матрице r1c1 + r2c1 + r3c1 + r4c1 + r5c1 = сумма вертикальных ячеек в матрице r1c1 + r2c2 + r3c3 + r4c4 + r5c5 = ???главная диагональ??? r1c5 + r2c4 + r3c3 + r4c2 + r5c1 = ???побочная??? Код:
sum:= 0; for i := 1 to 5 do sum:= sum + Matrix[1, i]; Код:
sum:= 0; for i := 1 to 5 do sum:= sum + Matrix[i, 1]; Код:
sum:= 0; for i := 1 to 5 do sum:= sum + Matrix[i, i]; Код:
sum:= 0; for i := 1 to 5 do sum:= sum + Matrix[i, (6 - i)]; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Grynyuk (23.05.2013)
|
#4
|
|||
|
|||
r1c1*r5c1 + r1c2* r4c2 + r1c3 *r3c3+ r1c4*r2c4 + r1c5 *r1c5 r2c1*r5c1 + r2c2* r4c2 + r2c3 *r2c3+ r2c4*r2c4 + r2c5 *r1c5 -------------------------------------------------------------- -------------------------------------------------------------- r5с1*r5c1 + r5c2* r4c2 + r5c3 *r3c3+ r5c4*r2c4 + r5c5 *r1c5 надо результат 1 строки записать в 1 ячейку стринггрид2, результат 2 строки записать в 2 ячейку стринггрид2 и тд. |
#5
|
|||
|
|||
Цитата:
|
#6
|
|||
|
|||
Цитата:
|