vinarsky_evgeny

Untitled

Dec 8th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.62 KB | None | 0 0
  1. {Винарский 17_2_a}
  2. program queue4(input,output);
  3. type
  4.     list=^node;
  5.     node=record
  6.           elem: integer;
  7.           next: list
  8.          end;
  9.     queue=record
  10.             start: list;
  11.             fin: list
  12.           end;
  13.          
  14. var f: file of integer;
  15.     c,d,a,b: integer;
  16.     och1,och2: queue;
  17.  
  18. procedure init(var q: queue);
  19.   begin
  20.       q.start:=nil;
  21.       q.fin:=nil
  22.   end;
  23.  
  24. function isempty(var q: queue): boolean;
  25.   begin
  26.     isempty:=q.start=nil;
  27.   end;
  28.  
  29. procedure pushQ(var q: queue; e: integer);
  30. var p: list;  
  31.   begin
  32.     new(p);
  33.     p^.elem:=e;
  34.     p^.next:=nil;
  35.       if(q.start=nil) then
  36.         q.start:=p
  37.       else
  38.         q.fin^.next:=p;
  39.       q.fin:=p;
  40.   end;
  41.  
  42. procedure popQ(var q: queue;var e: integer);
  43. var p: list;
  44.   begin
  45.    if(isempty(q)) then
  46.     write('error')
  47.    else
  48.     begin
  49.       new(p);
  50.       e:=q.start^.elem;
  51.       p:=q.start;
  52.       q.start:=q.start^.next;
  53.       dispose(p);
  54.       if(q.start=nil) then q.fin:=nil;
  55.     end;
  56.   end;
  57.  
  58. begin
  59.   init(och1);
  60.   init(och2);
  61.   assign(f,'input.txt');
  62.   readln(a,b);
  63.   read(c);
  64.   rewrite(f);
  65.   while(c<>0) do
  66.     begin
  67.       if(c<a) then
  68.         write(f,c)
  69.       else
  70.         if((c>=a) and (c<=b)) then
  71.           pushQ(och1,c)
  72.         else
  73.           pushQ(och2,c);
  74.       read(c);
  75.     end;
  76.   reset(f);
  77.   while(not(eof(f))) do
  78.     begin
  79.       read(f,d);
  80.       write(d,' ');
  81.     end;
  82.   while(not(isempty(och1))) do
  83.     begin
  84.       popQ(och1,c);
  85.       write(c,' ');
  86.     end;
  87.   while(not(isempty(och2))) do
  88.     begin
  89.       popQ(och2,c);
  90.       write(c,' ');
  91.     end;
  92. end.
Advertisement
Add Comment
Please, Sign In to add comment