|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.07.2009, 18:16 | #1 |
Новичок
Джуниор
Регистрация: 04.07.2009
Сообщений: 1
|
Помогите найти ошибку в программе на Pascal
uses crt;
type uk=^styd; styd=record fio:string[20]; adr:uk; end; var p1,p2,first:uk;f:text; procedure sozd_spis; begin assign(f,'c:\prim\famil.txt'); {$I-}reset(f);{$I+} if ioresult <> 0 then begin writeln('net faila'); readkey; exit; end; first:=nil; while not eof(f) do begin new(p1); readln(f,p1^.fio); if first=nil then first:=p1; p2:=p1; end; p2^.adr:=nil; end; procedure vivod_spis; begin p1:=first; while p1<> nil do begin writeln(p1^.fio,' '); p1:=p1^.adr; end; end; procedure sort_spis; var buf:string[20];priz:boolean; begin repeat priz:=true; p1:=first; while p1^.adr<>nil do begin if p1^.fio>p1^.adr^.fio then begin buf:=p1^.fio; p1^.fio:=p1^.adr^.fio; p1^.adr^.fio:=buf; priz:=false; end; p1:=p1^.adr; end; until priz; end; procedure udal_spis; var name:string[20]; begin writeln('vvedite ydal familiy'); readln(name); p1:=first; p2:=p1; while p1 <> nil do if p1^.fio<> name then begin p2:=p1; p1:=p1^.adr; end else if p1=first then begin first:=p1^.adr; dispose(p1); p1:=first; end else begin p2^.adr:=p1^.adr; dispose(p1); p1:=p2^.adr; end; end; procedure dobav_sort; var priz:boolean; d:uk; begin new(d); writeln('Введите новое значение'); readln(d^.fio); d^.adr:=nil; priz:=true; p1:=first; while (p1 <> nil) and priz do if p1^.fio> d^.fio then begin priz:=false; if p1=first then begin d^.adr:=first; first:=d; end else begin d^.adr:=p2^.adr; p2^.adr:=d; end end else begin p2:=p1; p1:=p1^.adr; end; if priz then p2^.adr:=d; writeln('Потавили новое значение'); readln; end; begin repeat clrscr; writeln('1 - Создание списка'); writeln('2 - Вывод списка'); writeln('3 - Сортировка списка'); writeln('4 - Удаление списка'); writeln('5 - Добавление в список'); writeln('6 - Выход и программы'); case readkey of '1': sozd_spis; '2': vivod_spis; '3': sort_spis; '4': udal_spis; '5': dobav_sort; '6': Exit; end; until false; end. не выводит дальше первого элемента((( |
04.07.2009, 20:07 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ошибка при создании списка не проставляются ссылки в элементе на следующий (поле ADR не заполняется)...
Код:
2) обязательно добавляйте в конце процедур сообщение и паузу. Тот же вывод пролетает, потом экран стирается и выводится меню. Вы просто не успеете что-либо увидеть! Сравните с таким: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку в программе | Nemles | Помощь студентам | 0 | 14.06.2009 14:21 |
Помогите найти ошибку в программе | Wast | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 29.12.2008 20:40 |
помогите на найти ошибку в программе | SYL@R | Помощь студентам | 1 | 28.11.2008 12:35 |
Помогите найти ошибку в программе | Evgenii | Помощь студентам | 3 | 24.07.2008 09:06 |
Помогите найти ошибку в программе | KnDmPetr | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 10.03.2008 14:19 |