Динамические массивы(2d)
Добавлено: 06 дек 2007, 20:45
Задание: транспонировать матрицу(строку сделать столбцом, а столбец-строкой).
Был вариант решения: ввести матрицу a[i,j], затем каждый элемент присвоить итоговой матрице b[j,i]:=a[i,j]. Предварительно выделить память под каждую из них.
Решение правильное, но нерациональное в плане памяти.
Теперь пробую работать с динамическим массивом(раньше никогда и не слышал о них):
type TMas=array [0..0,0..0] of integer;
var i,j,n:integer;
p:^TMas:
begin
write('Vvedite n=');read(n);
getmem(p,n*n*sizeof(integer));{нужно, чтобы память зависела от размера квадратной матрицы}
for i:=1 to n do
for j:=1 to n do
read(p^[i,j]);
writeln('Rezultat>');
for i:=1 to n do
begin
for j:=1 to n do
write(p^[j,i],' ');
writeln;writeln;
end;
freemem(p,n*n*sizeof(integer));
end.
На матрицу:
1 2 3
1 2 3
1 2 3
любыми способами переписывания кода программы выдает
1 1 1
1 1 2
1 2 3
Помогите выявить и устранить ошибки, пожалуйста?
Был вариант решения: ввести матрицу a[i,j], затем каждый элемент присвоить итоговой матрице b[j,i]:=a[i,j]. Предварительно выделить память под каждую из них.
Решение правильное, но нерациональное в плане памяти.
Теперь пробую работать с динамическим массивом(раньше никогда и не слышал о них):
type TMas=array [0..0,0..0] of integer;
var i,j,n:integer;
p:^TMas:
begin
write('Vvedite n=');read(n);
getmem(p,n*n*sizeof(integer));{нужно, чтобы память зависела от размера квадратной матрицы}
for i:=1 to n do
for j:=1 to n do
read(p^[i,j]);
writeln('Rezultat>');
for i:=1 to n do
begin
for j:=1 to n do
write(p^[j,i],' ');
writeln;writeln;
end;
freemem(p,n*n*sizeof(integer));
end.
На матрицу:
1 2 3
1 2 3
1 2 3
любыми способами переписывания кода программы выдает
1 1 1
1 1 2
1 2 3
Помогите выявить и устранить ошибки, пожалуйста?