Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Игорь Стасюк

Новички
  • Постов

    2
  • Зарегистрирован

  • Посещение

Информация о Игорь Стасюк

Достижения Игорь Стасюк

0

Репутация

  1. Вот полное задание к задаче : Разработать способ экономного размещения в памяти заданной разреженной таблицы. Разработать процедуры/функции, обеспечивающие доступ к элементам таблицы по номерам строки и имени столбца. В контрольной программе обеспечить запись и чтение всех записей таблицы. Произвести хронометраж выполнения операций чтения и записи элементов в массивы.
  2. Здравствуйте, пожалуйста помогите с задачей: все нулевые элементы расположены на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали . Program LAB2;Var arrp: array[1..5050] of integer; { Сжатая таблица } XM : integer; { Максимальные индексы в таблице }{==== Функция перевычисления индексов ====}{ y,x - индексы в 2-мерном массиве. Ф-ция возвращает индекс в 1-мерном массиве }Function NewIndex(y, x : integer) : integer; var i, d: integer; begin d:=0; for i:=1 to y-1 do d:=d+XM-i+1; NewIndex:=d+x-y+1; end;{==== Функция записи в сжатое представление массива ====}{ y, x - индексы в 2-мерном массиве, value - записываемое значение. Функция возвращает записываемое значение или 0 - если (x,y) задают индексы элемента, нулевого по определению }Function PutTab(y,x,value : integer) : integer; begin if (((x>y) and (y<=3)) or ((x<y) and (y>8)) or (x=y)) then PutTab:=0 else begin arrp[NewIndex(y,x)]:=value; PutTab:=value; end; end;{==== Функция выборки из сжатого представления массива ====}{ y, x - индексы в 2-мерном массиве. Функция возвращает выбранное значение }Function GetTab(y,x: integer) : integer; begin if (((x>y) and (y<=3)) or ((x<y) and (y>8)) or (x=y)) then GetTab:=0 else GetTab:=arrp[NewIndex(y,x)]; end;{============= Главная программа ===================}Var x, y : integer; { Индексы в 2-мерном массиве } k, h: integer; begin {===== Проверка формирования массива ======} XM:=10; { Запись элементов в 1-мерный массив } k:=1; for y:=1 to XM do for x:=1 to XM do begin h:=PutTab(y,x,k); k:=k+1; end; { Распечатка матрицы } writeln('===== Матрица ====='); for y:=1 to XM do begin for x:=1 to XM do write(GetTab(y,x):3); writeln; end; { Распечатка внутреннего представления матрицы } writeln('===== Матрица (внутр.представление) ====='); for y:=1 to 55 do write(arrp[y]:4); writeln; writeln;end. Нарисовать, то нарисовал а вот сделать перевод и запись в одномерный не знаю как . " d:=d+XM-i+1; NewIndex:=d+x-y+1;" - надо тут поменять пересчёт индексов, а я не понимаю как это сделать. Помогите пожалуйста.
×
×
  • Создать...