Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 22:19   #1
Lee_P
Новичок
Джуниор
 
Регистрация: 21.05.2010
Сообщений: 2
По умолчанию Delphi. Матрицы

Доброго времени суток всем!
Такая проблемка.
Задача на матрицы.
Составить описание объектного типа Матрица, обеспечивающего размещение матрицы произвольного размера, вывода на экран подматрицы любого размера и всей матрицы, перемножение 2-х матриц, транспонирование матрицы, получение обратной матрицы.

Сначала сделал вывод на экран трех матриц. Все работало. Потом решил сделать перемножение. Первые две матрицы оставил неизменными. А третью изменил. Стало выдавать ошибку.

В общем вот код:

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    procedure Button1Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
  Procedure Install();   // Ввод массивов
  Procedure Print();     // Ввод массивов в таблицы
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  A,B,C: array of array of Integer;  //Исходные массивы
  N : Byte  ;       //Размеры исходных массивов
 
implementation
 
{$R *.dfm}
 
Procedure TForm1.Install();     //Ввод данных в массив
var
  i,j,k: Byte;//здесь изначально были только i,j потом потребовалось ввести еще и k для перемножения тут все и началось
begin
N:=StrToInt(Edit1.text);
SetLength(A,N,N);
SetLength(B,N,N);
SetLength(C,N,N);
 
 
For i:=0 to (N-1) do
  For k:=0 to (N-1) do
    A[i,k]:=Random(10)-Random(10);
 
 For k:=0 to (N-1) do
  For j:=0 to (N-1) do
    B[k,j]:=Random(10)-Random(10);
 
{For i:=0 to (N-1) do
  For j:=0 to (N-1) do
    C[i,j]:=Random(10)-Random(10);
end;     }
 
For i:=0 to (N-1) do
  For j:=0 to (N-1) do
  begin
    C[i,j]:=0;
    for k:=1 to (N-1) do
      C[i,j]:=C[i,j]+A[i,k]*B[k,j]
 end;
 
Procedure TForm1.print();       // Ввод данных в таблицу
var
  i,j,k: Byte;
begin
 
 For i:=0 to  (N-1) do
      For j:=0 to (N-1) do
        StringGrid2.Cells[k,i]:=IntToStr(A[i,k]);
 
    For i:=0 to  (N-1) do
      For j:=0 to (N-1) do
        StringGrid1.Cells[j,k]:=IntToStr(B[k,j]);
 
    For i:=0 to  (N-1) do
      For j:=0 to (N-1) do
        StringGrid3.Cells[j,i]:=IntToStr(C[i,j]);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: Byte;
 
begin
  Install();
  Print();
 
end;
end.
Lee_P вне форума Ответить с цитированием
Старый 21.05.2010, 22:49   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Код:
    
for k:=1 to (N-1) do
 C[i,j]:=C[i,j]+A[i,k]*B[k,j]
Почему от 1 цикл начинается, от нуля надо. В сумме должно быть N слагаемых.

Код:
 For i:=0 to  (N-1) do
      For j:=0 to (N-1) do
        StringGrid2.Cells[k,i]:=IntToStr(A[i,k]);
 
    For i:=0 to  (N-1) do
      For j:=0 to (N-1) do
        StringGrid1.Cells[j,k]:=IntToStr(B[k,j]);
А здесь перебираешь в циклах по i,j. А значения массива берешь с индексом k.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 21.05.2010, 23:09   #3
Lee_P
Новичок
Джуниор
 
Регистрация: 21.05.2010
Сообщений: 2
По умолчанию

k ввел для перемножения матриц.
Lee_P вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi (матрицы) Polusha Помощь студентам 1 25.12.2009 16:14
матрицы Delphi Mr_Frost Помощь студентам 10 09.04.2009 00:57
Матрицы Delphi Skarabei Помощь студентам 3 07.04.2009 17:14
Матрицы в Delphi SlevinVik Помощь студентам 1 02.04.2009 22:19
[Delphi]Матрицы $TuDenT Помощь студентам 2 27.10.2008 08:28