Требуется: Получить в таком же виде AB, не меняя представления матриц.
P.S. Сами понимаете, что мне сие - без нужды.))) Ho вот любимая племянница просила помочь...
Soul писал(а):Source of the post
Natrix, a как быть c тем, что результирующая матрица не будет иметь вид, как две исходные? T.e. там будет больше, чем N*(N+1)/2 ненулевых эелементов
Soul писал(а):Source of the post
Эм, может я совсем уже забыл, как перемножаются матрицы, но у меня вышло (при возведении предыдущей матрицы в квадрат):
Мы ведь перемножаем столбец первой на строку втооой...?
Код: Выбрать все
type
TMatrix = class
private
elems : array of integer;
cnt, n : word;
public
constructor create(const n : word);
destructor destroy;override;
procedure set(x,y : word; val : integer);
function get(x,y; word) : integer;
end;
constructor TMatrix.create(const n : word);
begin
cnt:=n*n;
self.n:=n;
setlength(elems,cnt);
end;
destructor TMatrix.destroy;
begin
cnt:=0;
setlength(elems,cnt);
end;
procedure TMatrix.set(x,y : word; val : integer);
var before, m : word;
begin
if (y>x)or(x>n)or(y>n) then exit;
before:=0;
if y>0 then before:=(n+(n-y+1))*y div 2;
m:=before+x-y;
elems[m]:=val;
end;
function TMatrix.get(x,y; word) : integer;
var before, m : word;
begin
if (y>x)or(x>n)or(y>n) then
begin
result:=0;
exit;
end;
before:=0;
if y>0 then before:=(n+(n-y+1))*y div 2;
m:=before+x-y;
result:=elems[m];
end;
Soul писал(а):Source of the post
Честно скажу, на компиляторе пока код не проверял. Ho идея примерно такая. Дальше умножение 2-х матриц - обычный пробег вложенными циклами.
Natrix писал(а):Source of the post
Соотношение между координатами, предположим, есть.
A тут как быть?
Вернуться в «Computer Science»
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 2 гостей