Матрицы

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
xxYurikxx
Сообщения: 2
Зарегистрирован: 13 окт 2009, 10:37

Помогите кто-нить с задачой

|6 25 11| (A)


|3 5 7 9|
|1 4 6 -2| (B) (<<== ето одна матрица)
|2 -1 2 1|


Нужно: А*В

Напишыте логаритм плиз для Pascal

зарание спасибо
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

В чём хранишь? В массивах? В объектах? Давай декларацию типа с комментариями. И определись с выбором порядка индексов. Первый индекс - строка, а второй - столбец. или наоьорот? Где размеры матриц? И что за паскаль? Turbo, или что-то другое? Алгоритм знаю. Как только ответишь на эти вопросы, сразу же дам функцию умножения. Хотя, удивляет, что с алгоритмом умножения матриц (в чистом виде высшая математика) ты обращаешься к прогрмерам.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
xxYurikxx
Сообщения: 2
Зарегистрирован: 13 окт 2009, 10:37

atavin-ta писал(а):В чём хранишь? В массивах? В объектах? Давай декларацию типа с комментариями. И определись с выбором порядка индексов. Первый индекс - строка, а второй - столбец. или наоьорот? Где размеры матриц? И что за паскаль? Turbo, или что-то другое? Алгоритм знаю. Как только ответишь на эти вопросы, сразу же дам функцию умножения. Хотя, удивляет, что с алгоритмом умножения матриц (в чистом виде высшая математика) ты обращаешься к прогрмерам.
В масивах.
Что за индексы?
незнаю где размеры, написал как в задаче написато, тупо 2-ве матрицы их нуно умножыть все.
Турбо паскаль
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Каждый массив имеет индексы, а каждый элемент идентифицируется сочетанием их значений. У линейного массива один индекс, у двумерного - два и т.д. Порядок индексов важен. Например, A[1,2] и A[2,1] (в квадратных скобках - индексы, сначала первый и через запятую - второй) - разные элементы массива A.
&quot писал(а):незнаю где размеры,
Как не знаешь? Ты должен решить, где у тебя будут размеры (их у каждой матрицы два: число строк и число столбцов). Если в массивах, то, наверное,

Код: Выделить всё

 type TMatrix=array[1..N,1..N] of real;{Первый индекс - строка, второй - столбец}
?
Или у тебя что-то другое?
Если так, то

Код: Выделить всё

type TMatrix=array[1..N,1..N] of real;{Первый индекс - строка, второй - столбец}
function Mul(a,b:TMatrix, ARows,ACols,BRows,BCols:integer):TMatrix;
var r,c,i:Integer;
     Res:TMatrix;
begin
      if (ACols=BRows) and (ACols>0) and (ACols<=N) and (ARows>0)  and (ARows<=N)  and (BCols>0) and  (BCols<=N)  then
      begin
             for r:=1 to ARows do
                  for c:=1 to BCols do
                       begin
                              Res[r,c]:=0;
                              for i:=1 to ACols do
                                  Res[r,c]:=Res[r,c]+A[r,i]*B[i,c];   
                       end;
      end;
      Mul:=Res;
end;
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить