Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2015, 08:55   #1
ivi1
Новичок
Джуниор
 
Регистрация: 29.01.2015
Сообщений: 1
Плохо Сортировка очереди. Ошибка

Здравствуйте, написал программу. Первые 2 процедуры выполняются отлично, но вот при сортировке элементов, расположенных после первого положительного элемента, выскакивает ошибка: Program3.pas(92) : Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта.

Что неверно? Где ошибка?

Вот мой код:
http://pastebin.com/PtKwa9Qk

Начало ошибки здесь: if(first^.Value > 0)
ivi1 вне форума Ответить с цитированием
Старый 29.01.2015, 09:53   #2
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Смотри. Ещё до сортировки
1. Необоснованные глобальные переменные.
2. Нет процедуры очистки списка.
3. Нет процедуры печати списка на экран.

Почему я это перечислил.
1. Пока не вдаваясь в сортировку, у меня возникло стойкое ощущение некорректности ввода списка (spisok). Проверить который, можно лишь распечатав его.
2. Очистка памяти нужна.

Некорректность заключается в использовании глобальных переменных и в том, что при вводе нового элемента делают примерно так
Код:
  new(tmp);
  tmp^.Value:=v;
  tmp^.Next:=nil;
  {определение - куда пристроить этот элемент}
  if First=nil then
  ....
  else
  ...
Если хочешь в конец списка - то держи ещё одну переменную.
Т.е. у тебя последний элемент списка указывает в "космос".
Проверка конца списка делается не по 0-му значению элемента, а по указателю, равному nil.
Раз указатель не равен nil, то в дальнейшем коде и возникают ошибки.
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Free Pascal] Сортировка списка очереди. Dikoobraz Помощь студентам 3 25.04.2013 21:33
С заданной целочисленной очереди организовать две: первая содержит все положительные элементы данной очереди, вторая - отрицательн wowan30002 Общие вопросы C/C++ 0 20.11.2012 17:39
Быстрая сортировка. Где-то ошибка jeeeezy Помощь студентам 0 10.12.2011 00:57
Сортировка Очереди методом heapsort Jigarkhwar Помощь студентам 3 13.11.2011 01:23
Сортировка очереди. [c++] Jigarkhwar Помощь студентам 8 28.09.2011 23:12