![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
*alt |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задача
Задан текстовый файл. Распечатать все слова максимальной длинны (с использованием очереди) Вот мой код, но он не работает Пока глупости много=)) Код type TElem = string; Tptr = ^Tlist; Tlist = record inf: Telem; next: tptr; end; TQueue = record head, tail: Tptr; end; var q: TQueue; //очередь f: text; m_s,max_s,name: string; s:char; ok:boolean; {инициализация очереди} procedure queue_init (var q: Tqueue); begin q.head:=nil; end; {проверка на пустоту} function queue_empty (var q: tqueue): boolean; begin queue_empty:=q.head=nil; end; {добавление в очередь} procedure queue_push (var q: tqueue; var el: Telem); var p: Tptr; begin new(p); p^.inf:=el; if queue_empty (q) then q.head:=p else q.tail^.next:=p; q.tail:=p; end; {изъятие из очереди} function queue_pop (var q:Tqueue; var el:Telem): boolean; var p: Tptr; begin if queue_empty (q) then queue_pop:=false else begin queue_pop:=true; el:=q.head^.inf; p:=q.head; q.head:=q.head^.next; dispose(p); end; end; begin{main} writeln ('Введите имя файла (имя.txt)'); read(name); assign(f, name); reset(f); queue_init(q); {добавление в очередь} while not eof(f) do begin m_s:=''; ok:=true; while ok or eof(f) do begin read(f, s); if s=' ' then ok:=false; m_s:=m_s+s; end; if length(m_s)>=length(max_s) then begin max_s:=m_s; queue_push(q, max_s); end; end; readln; close(f); assign(f, 'out_text.txt'); rewrite(f); while not queue_empty(q) do begin queue_pop (q,m_s); if m_s=max_s then write (f, m_s); end; close(f); readln; writeln('***********Обработка Завершена***********'); readln; end. Помогите исправить и довести решение... |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых,
procedure queue_push (var q: tqueue; var el: Telem);. Во-вторых, while not seekeof(f) do begin Ну, и в третьих - вывод: while not queue_empty(q) do begin |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:24 |