Помогите пожалуйста....pascal.ссылка на объект не указывает на экземпляр объекта. - Вопросы по Pascal
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Помогите пожалуйста....pascal.ссылка на объект не указывает на экземпляр объекта.

Регистрация
29 Сен 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
Ссылка на объект не указывает на экземпляр объекта. program MatrixLinkedList;



type

MatrixElement = record

value: real;

end;



ListNode = record

row: integer;

matrixElement: MatrixElement;

next: ^ListNode;

end;



var

n, m, i, j: integer;

matrix: array of array of MatrixElement;

head, temp, tempPrev, newNode: ^ListNode;

ass:char;



begin

write('Enter number of rows (n): ');

readln(n);

write('Enter number of columns (m): ');

readln(m);



//SetLength(matrix, n, m);



for i := 0 to n - 1 do

begin

for j := 0 to m - 1 do

begin

write('Enter value for matrix[', i + 1, '][', j + 1, ']: ');

readln(matrix[i,j].value);

end;

end;

write('a or b:');

readln(ass);

if (ass='a') then

begin

for i := 0 to n - 1 do

begin

temp := head;

tempPrev := nil;

while (temp nil) and (temp^.matrixElement.value < matrix[i,0].value) do

begin

tempPrev := temp;

temp := temp^.next;

end;



new(newNode);

newNode^.row := i;

newNode^.matrixElement := matrix[i,0];

if temp = head then

begin

newNode^.next := head;

head := newNode;

end

else

begin

newNode^.next := temp;

if tempPrev nil then

begin

tempPrev^.next := newNode;

end;

end;

end;

end;



if (ass='b') then

begin

for i := 0 to n - 1 do

begin

temp := head;

tempPrev := nil;

while (temp nil) and (temp^.matrixElement.value >= matrix[i,0].value) do

begin

tempPrev := temp;

temp := temp^.next;

end;



new(newNode);

newNode^.row := i;

newNode^.matrixElement := matrix[i,0];

if temp = head then

begin

newNode^.next := head;

head := newNode;

end

else

begin

newNode^.next := temp;

if tempPrev nil then

begin

tempPrev^.next := newNode;

end;

end;

end;

end;

end.
 
Регистрация
25 Май 2013
Сообщения
98
Репутация
0
Спасибо
0
Монет
0
Так... Ты вродь пытаешься работать с динамическим списком, но не инициализируешь его head. Из-за этого при первом обращении к head происходит ошибка, т.к он указывает в никуда. Добавь строку для выделения памяти под двумерный массив matrix, и перед началом работы со списком добавь инициализацию head значением nil (для того, чтоб было понятно, что список пустой), не?
 
Сверху Снизу