Advertisement
volkovich_maksim

t_17_5_b_v1_volkovich

Dec 16th, 2015
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.91 KB | None | 0 0
  1. {Волкович Максим (volkovcih.maksim.s@gmail.com), 112гр., v1.0,
  2. дан текст, сбалансированный по круглым скобкам. Для каждой пары скобок (соотв. открывающей и закрывающей) вывести номера их позиций в тексте, упорядочив по в порядке возрастания номеров позиций закрывающих скобок}
  3. program t_17_5_v1_volkovich (input,output);
  4. type link = ^chain;
  5.      chain = record next:link; elem: integer end;
  6.      stack = link;
  7. var f:text; c:char; q:stack;    
  8. procedure instack(var q:stack; i:integer);
  9.     var st:stack;
  10.     begin
  11.        new(st); st^.elem:=i; st^.next:=q; q:=st;
  12.     end;  
  13. procedure outofstack(var q:stack; i:integer);
  14.     var st:stack;
  15.     begin
  16.        new(st);
  17.        i:=q^.elem;
  18.        st^.elem:=q^.next^.elem;
  19.        st^.next:=q^.next^.next;
  20.        q:=st; dispose(st);
  21.     end;      
  22. procedure rewrite(var f:text);
  23.       var i,j:integer; q:stack{integer};
  24.       begin
  25.           {assign(f,'17_5.txt');
  26.           reset(f);}
  27.           read(f,c);
  28.           i:=1;
  29.           repeat
  30.               if c='(' then instack(q,i);{в стек помещается номер позиции скобки(текущее значение i)}
  31.               if c=')' then
  32.                    begin
  33.                          outofstack(q,j);{из стека извлекается номер последней открывающей скобки}
  34.                          write(j,' ',i,' ');{печатается сначала номер открывающей скобки, потом закрывающей(текущее значение i)}
  35.                    end;
  36.               i:=i+1;
  37.           until eof(f);
  38.           close(f);
  39.       end;
  40. begin
  41.     new(q);
  42.     assign(f,'17_5.txt');
  43.     reset(f);
  44.     rewrite(f);
  45. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement