Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Волкович Максим (volkovcih.maksim.s@gmail.com), 112гр., v1.0,
- дан текст, сбалансированный по круглым скобкам. Для каждой пары скобок (соотв. открывающей и закрывающей) вывести номера их позиций в тексте, упорядочив по в порядке возрастания номеров позиций закрывающих скобок}
- program t_17_5_v1_volkovich (input,output);
- type link = ^chain;
- chain = record next:link; elem: integer end;
- stack = link;
- var f:text; c:char; q:stack;
- procedure instack(var q:stack; i:integer);
- var st:stack;
- begin
- new(st); st^.elem:=i; st^.next:=q; q:=st;
- end;
- procedure outofstack(var q:stack; i:integer);
- var st:stack;
- begin
- new(st);
- i:=q^.elem;
- st^.elem:=q^.next^.elem;
- st^.next:=q^.next^.next;
- q:=st; dispose(st);
- end;
- procedure rewrite(var f:text);
- var i,j:integer; q:stack{integer};
- begin
- {assign(f,'17_5.txt');
- reset(f);}
- read(f,c);
- i:=1;
- repeat
- if c='(' then instack(q,i);{в стек помещается номер позиции скобки(текущее значение i)}
- if c=')' then
- begin
- outofstack(q,j);{из стека извлекается номер последней открывающей скобки}
- write(j,' ',i,' ');{печатается сначала номер открывающей скобки, потом закрывающей(текущее значение i)}
- end;
- i:=i+1;
- until eof(f);
- close(f);
- end;
- begin
- new(q);
- assign(f,'17_5.txt');
- reset(f);
- rewrite(f);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement