singlepost

Плз, помогите с указателями в Pascal << На главную или назад  

Пытаюсь написать программу, которая с помощью процедуры выводит на экран элементы матрицы произвольного размера. Вот, как я себе это представлял:

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.

Проблема в том, что в результате выполнения выводятся не элементы матрицы, а какие-то небесные значения. Подозреваю, что это из-за, возможно, не совсем корректной передачи указателя. Помогите пожалуйста. Заранее спасибо)

4 ответов в теме “Плз, помогите с указателями в Pascal”

  1. 3
    Кирилл Быков ответил:

    Матрицу создавай по шаблону, который сам описал, а не статикой.

  2. 2
    Вадим Хоптынец ответил:

    Задача: написать процедуру, которая выводит на экран переданную ей матрицу.

  3. 1
    Антон Щиров ответил:

    1) > {Описываем динамический массив}
    Бред. Описан статический массив

    2) TMatrix у Вас массив указателей на массив, а a и b – линейные структуры

    3) Может опишите задачу, а не свой метод неправильного его решения?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.