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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 21:35   #1
Настя-Картошка
 
Регистрация: 24.01.2011
Сообщений: 5
По умолчанию Ошибка в программе перемножения матрицы на вектор в делфи

Конечный результ на форме выдает неверный,там какая-то ошибка,запуталась с i и j. Че-то там с StringGrid`ами...
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Matrix: array [0..4, 0..4] of integer;  //  Массив А(5, 5)
  Vector: array [0..4] of integer;
 //  Массив В(вектор(5))
  Element: integer;  //  Новый элемент полученного массива

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: integer;
begin
  For i:=0 to 4 do
    For j:=0 to 4 do
    Matrix[i, j]:= StrToInt(StringGrid1.Cells[i, j]);  //  Получение матрицы из сетки
  For i:=0 to 4 do
    Vector[i]:= StrToInt(StringGrid2.Cells[i, 0]);  //  Получение вектора из сетки
  for i:=0 to 4 do  //  Умножение массивов A*B
    begin
      Element:= 0;
      for j:=0 to 4 do
        Element:= Element + (Matrix[i, j]) * (Vector[j]);  //  Получение нового элемента массива C
      StringGrid3.Cells[i, 0]:= IntToStr(Element);  //  Вывод полученного элемента массива в сетку
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i, j: integer;
begin
  Randomize;  //  Инициализация генератора случайных чисел
  For i:=0 to 4 do
    For j:=0 to 4 do
      StringGrid1.Cells[i, j]:= IntToStr(Random(11));  //  Заполнение первой сетки случайными числами в диапазоне (0..10)
  For i:=0 to 4 do
    StringGrid2.Cells[i, 0]:= IntToStr(Random(11));  //  Заполнение второй сетки случайными числами в диапазоне (0..10)
end;
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.01.2011 в 12:14.
Настя-Картошка вне форума Ответить с цитированием
Старый 29.01.2011, 12:03   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

В двумерных массивах (array) первое измерение (Matrix: array [0..4, ...]) определяет строки, второе (Matrix: array [..., 0..4]) столбцы.
В StringGrid наоборот: первое колонки, второе строки. Поэтому надо поменять местами индексы колонок и строк:
Код:
Matrix[i, j]:= StrToInt(StringGrid1.Cells[j, i]);
Прик вне форума Ответить с цитированием
Старый 29.01.2011, 12:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кстати, у меня глюки, или одновременно два разных человека пишут одинаковую программу?!

я имею в виду тему: умножение матрицы на вектор на Delphi (неверно работает)

даже если это разные люди, может всё же стоит объединить обсуждение в одну тему?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.01.2011, 17:01   #4
Настя-Картошка
 
Регистрация: 24.01.2011
Сообщений: 5
По умолчанию

не знаю,но эт не я)
моя тема раньше была создана)
работу уже сдала,но все равно спасибо)
Настя-Картошка вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе. Матрицы. v1le Помощь студентам 1 18.12.2010 00:56
Ошибка в программе в Делфи Den55 Помощь студентам 0 02.06.2010 19:22
Подпрограмма перемножения матриц (3 матрицы) Doublefaced Помощь студентам 8 01.07.2009 23:15
Помогите, ошибка в программе. делфи Absent Помощь студентам 5 18.12.2007 17:36