Показать сообщение отдельно
  #6  
Старый 13.12.2009, 01:11
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Во первых, не понятно условие: while (q<>b), когда перед этим стоит q:=b;, то есть, получается ты даже не попадаешь в этот цикл.

Дальше, ты хочешь пробежать весь круг, при том b = начальный элемент, но по коду выше мы видим что он равен нулю b:=nil; притом в процедуру incol (где у тебя изменяет значение b) мы не попадаем, опять же из-за while (q<>b).

И Cтрадалецъ скорее всего прав, while not eof do - скорее всего равносильно фразе while true do, то есть если работа с файлом, то вид должен был быть while not eof(F) do, если у тебя только eof функция не переопределена., ну и конечно же, read(x) то же сомневает, так как read(x) ожидает ввод данных с клавиатуры, а если это должно читаться из файла, то должна быть передана ссылка на файл, вида: Read(F, x) ; , где F - ссылка на открытый файл, а если это ввод данных (опять противоречие while not eof do - вначале у нас нет элементов, значит not eof = false, тоже не попадаем в цикл), то лучше было бы сначала в цикле собрать эти данные, а потом их отсортировать, а не совмещать эти процессы.

Ну и наконец ошибка скорее всего возвращается словами ... or (x<q^.d) ..., так как при входе в цикл q = b; а b как мы помним ранее = nil, соответственно q^.d = Error)

Советую переписать весь алгоритм.
Ответить с цитированием