Пытаюсь написать программу, которая с помощью процедуры выводит на экран элементы матрицы произвольного размера. Вот, как я себе это представлял:
program ProcShowMatrix;
uses
Crt;
type
{Описываем динамический массив}
Vector = array[1..1]of integer;
PVector = ^Vector;
Matrix = array[1..1]of PVector;
PMatrix = ^Matrix;
{Процедура вывода матрицы на экран}
procedure ShowMatrix(arr:PMatrix; m, n:integer);
var
i, j:integer;
begin
for i:=1 to m do
begin
for j:=1 to n do
Write(' ',arr^[i]^[j]);
WriteLn;
end;
end;
var
a:array[1..4,1..7]of integer;
b:array[1..7,1..4]of integer;
i, j:integer;
begin
ClrScr;
{Инициализирую матрицу а}
for i:=1 to 4 do
for j:=1 to 7 do
a[i,j]:=i*j;
{Передаю матрицу а в процедуру}
ShowMatrix(@a, 4, 7);
{Тоже самое для матрицы b}
for i:=1 to 7 do
for j:=1 to 4 do
b[i,j]:=i*j;
ShowMatrix(@b, 7, 4);
end.
Проблема в том, что в результате выполнения выводятся не элементы матрицы, а какие-то небесные значения. Подозреваю, что это из-за, возможно, не совсем корректной передачи указателя. Помогите пожалуйста. Заранее спасибо)
16 ноября 2009 в 10:04
Матрицу создавай по шаблону, который сам описал, а не статикой.
15 ноября 2009 в 17:03
Задача: написать процедуру, которая выводит на экран переданную ей матрицу.
15 ноября 2009 в 16:03
1) > {Описываем динамический массив}
Бред. Описан статический массив
2) TMatrix у Вас массив указателей на массив, а a и b – линейные структуры
3) Может опишите задачу, а не свой метод неправильного его решения?