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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.08.2009, 21:21
Alyonka89 Alyonka89 вне форума
Прохожий
 
Регистрация: 17.08.2009
Сообщения: 3
Репутация: 10
По умолчанию Умножение матриц

Здравствуйте!
Написала маленькую программу перемножения 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;
Ответить с цитированием
  #2  
Старый 20.08.2009, 18:29
dissident dissident вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

Cells[номер столбца, номер строки], а в математике наоборот, первый индекс - номер строки. Меняем местами индексы вот так:

for k := 1 to m do s:=s+a[k,i]*b[j,k];
c[j,i]:=s;

и все работает.
Ответить с цитированием
  #3  
Старый 22.08.2009, 20:57
NT_AUTHORITY NT_AUTHORITY вне форума
Прохожий
 
Регистрация: 06.08.2009
Сообщения: 34
Репутация: 10
По умолчанию

Что-то здесь циклов слишком много... Вот код на C++ я когда-то писал.
Код:
for (int j = 0; j<Len1; j++)
		for (i = 0; i< Len2; i++)
			for (int index = 0; index<Len2; index++)
                 ResMatr[i][j] = ResMatr[i][j] + Matr1[index][j]*Matr2[i][index];
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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