Показать сообщение отдельно
  #5  
Старый 23.12.2010, 19:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

По поводу хранения - это некоторый вариант хранения разреженных матриц. Фактически, тебе нужна функция, которая переведет координаты двумерного массива в координаты одномерного. В этой функции д.б. 2 ветки - координаты выше главной диагонали и ниже. Во втором случае надо их "отразить" и вернуться к первой ветке.

Код:
function GetIndex(I, J, N : Integer) : Integer;
// I, J - координаты в "квадрате"
// N - размер матрицы
// Result - коорд в линейном массиве
begin
  If J > I 
    Then // Ниже диагонали
       Begin
         Result := GetIndex(J,I,N);
       End
    Else // Выше диагонали и диагональ
      Begin
         // Трансляция координат матрицы в линейный массив
         // Сделаешь сам :)
      End;
Ответить с цитированием