1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Вот такая задача "Используя очередь, распечатать в заданной последовательности символов сначала все цифры, затем остальные символы".Короче проходим сначла один раз по очереди печатаем цифры,второй раз остальные символы....я знаю как реализовать это используя две очереди...подскажите как сделать с одной..если это вообще возможно...
program dgdfgdfg; uses crt; type ref=^z; z=record next:ref; el:char; end; inout=(in1,out); FIFO=array[in1..out] of ref; var order,order1:FIFO;a,h:char;q:ref;n,k,t:integer;
begin clrscr; new(order[in1]); order[out]:=order[in1]; order[in1]^.next:=nil; new(order1[in1]); order1[out]:=order1[in1]; order1[in1]^.next:=nil;
repeat readln(a); new(q); q^.next:=nil; q^.el:=a; order[in1]^.next:=q; order[in1]:=q; n:=n+1; until a='.';
while k<>n do begin q:=order[out]^.next; h:=q^.el; if h in ['0'..'9'] then begin write(' ',q^.el); order[out]^.next:=q^.next; if q^.next=nil then order[in1]:=order[out]; dispose(q); t:=t+1; end else begin order[out]^.next:=q^.next; order1[in1]^.next:=q; order1[in1]:=q;
end; k:=k+1;
end; k:=0; while k<>n-t do begin q:=order1[out]^.next; write(' ',q^.el); order1[out]^.next:=q^.next;; dispose(q); k:=k+1; end; readkey; end.