Другие языки программирования и технологии

Дана действительная матрица размера n * m организовать однонаправленный список матрицы. Паскаль

Всё очень просто (смотри коментарии) :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ задаём размерность массива }
const
N = 100;
M = 120;

{ создаём тип массива }
type
pMtype = ^Mtype; { тип pointer - ссылка на одномерный массив }
Mtype = array [1..M] of Real; { собственно массив, на который ссылаемся в предыдущем пункте }
Ntype = array [1..N] of pMtype; { одномерный массив ссылок на другой одномерный массив }
{ ИТОГО: задали тип двумерного массива }

var
Mas : Ntype; { объявляем такой массив }
i, j : Integer;
Sum : Real;

begin
{ инициализируем массив - создаём ссылки на вложенный массив и присваиваем каждой ячейке 0 }
for i := 1 to N do
begin
New(Mas[i]); { в памяти отводим кусочек под наш вложенный массив и Mas[i] присваиваем адрес начала этого кусочка в памяти }
for j := 1 to M do Mas[i]^[j] := 0; { обнуляем вложенный массив }
end;

{{ заполним случайными значениями < 100 }
Randomize;
for i := 1 to N do
for j := 1 to M do Mas[i]^[j] := Random * 100;

{ найдём сумму всех значений }
Sum := 0;
for i := 1 to N do
for j := 1 to M do Sum := Sum + Mas[i]^[j];

Memo1.Lines.Add(FloatToStr(Sum));

{ освободим память }
{ после работы с динамическими данными нужно освободить память }
{ иначе она освободится только после завершения программы }
{ т. е. этого в данном случае можно не делать, но когда динамические переменные используются где-то в подпрограммах, то это обязательная операция }
for i := 1 to N do
Dispose(Mas[i]);
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Поздравляю! Размерность такого массива может быть очень большая.
К примеру 1000x2000 - это вполне реально.
Maks Klimovich
Maks Klimovich
83 151
Лучший ответ
все писец пошло сплошное ООП в школе

Похожие вопросы