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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2009, 21:25   #1
Alyonka_v
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 11
По умолчанию Умножение матриц

Здравствуйте!
Написала маленькую программу перемножения 2 матриц, но результат перемножения неверный=(
Помогите, пожалуйста, найти где у меня ошибка и подскажите пожалуйста как ее исправить

Код:
procedure TForm1.Button1Click(Sender: TObject);
type matrica=array[1..15,1..15] of real;
var a, b, c: matrica;
    i, j, m, n, l, k: byte;
    s: real;
begin
  n:=4;
  m:=4;
  l:=4;
  for i := 1 to n do
    for j := 1 to m do a[i,j]:=strtoint(stringgrid1.cells[i,j]);
  for i := 1 to n do
    for j := 1 to m do b[i,j]:=strtoint(stringgrid2.cells[i,j]);
  for I := 1 to n do
    for j := 1 to l do
      begin
        s:=0;
        for k := 1 to m do
          s:=s+a[i,k]*b[k,j];
        c[i,j]:=s;
      end;
  for I := 1 to n do
    for j := 1 to m do
      stringgrid3.cells[i,j]:=floattostrf(c[i,j],fffixed,4,1);
end;
Alyonka_v вне форума Ответить с цитированием
Старый 18.08.2009, 21:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В Cells первое число - номер столбца, а второе - номер строки.
Исправьте вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
type matrica=array[1..15,1..15] of real;
var a, b, c: matrica;
    i, j, m, n, l, k: byte;
    s: real;
begin
  n:=4;
  m:=4;
  l:=4;
  for i := 1 to n do
    for j := 1 to m do a[i,j]:=strtoint(stringgrid1.cells[j,i]);
  for i := 1 to n do
    for j := 1 to m do b[i,j]:=strtoint(stringgrid2.cells[j,i]);
  for I := 1 to n do
    for j := 1 to l do
      begin
        s:=0;
        for k := 1 to m do
          s:=s+a[i,k]*b[k,j];
        c[i,j]:=s;
      end;
  for I := 1 to n do
    for j := 1 to m do
      stringgrid3.cells[j,i]:=floattostrf(c[i,j],fffixed,4,1);
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.08.2009, 21:51   #3
Alyonka_v
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 11
По умолчанию

Спасибо большое, теперь буду знать
Alyonka_v вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25