Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2013, 22:29
Grynyuk Grynyuk вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 25
Версия Delphi: Embarcadero RAD
Репутация: 10
Восклицание Доработать программу (Работа с матрицами и 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  
Старый 23.05.2013, 08:46
Grynyuk Grynyuk вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 25
Версия Delphi: Embarcadero RAD
Репутация: 10
По умолчанию

Помогите пожалуйста. Куча просмотров и ни одного ответа
Ответить с цитированием
  #3  
Старый 23.05.2013, 10:48
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Grynyuk
...найти скалярное произведение каждой строки на главную диагональ и вывести в вектор...Нужно добавить к выводимому результату умножение на побочную диагональ...
Шифр какой-то, а не задание, с моими восемью классами церковно-приходской школы вообще не ведомо, шо це таке побочная диагональ, на сало вроде не похоже

Алгоритм хотя бы можете описать что нужно, например

ячейки в матрице
Код:
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  
Старый 23.05.2013, 14:42
Grynyuk Grynyuk вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 25
Версия Delphi: Embarcadero RAD
Репутация: 10
По умолчанию


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  
Старый 23.05.2013, 14:45
Grynyuk Grynyuk вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 25
Версия Delphi: Embarcadero RAD
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Шифр какой-то, а не задание, с моими восемью классами церковно-приходской школы вообще не ведомо, шо це таке побочная диагональ, на сало вроде не похоже

Ну примерно такой алгоритм я просто в делфи ничего не понимаю почти. Помогите если можете)
Ответить с цитированием
  #6  
Старый 24.05.2013, 15:19
Grynyuk Grynyuk вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 25
Версия Delphi: Embarcadero RAD
Репутация: 10
По умолчанию

Цитата:
Сообщение от Grynyuk
Нужно в матрице 5х5 которая считывается из стринггрид1 найти скалярное произведение каждой строки на главную диагональ и вывести в вектор который записывается в стринггрид2. Нужно добавить к выводимому результату умножение на побочную диагональ суму элементов каждой строки я нашел
Вот весь проект может пригодится
Вложения
Тип файла: rar Desktop.rar (2.8 Кбайт, 4 просмотров)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter