ВУЗ:
Составители:
Рубрика:
- 37 -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
f ’A’ ’+’ ’(’ ’4’ ’5’ ’-’ ’F’ ’(’ ’X’ ’)’ ’*’ ’(’ ’B’ ’-’ ’C’ ’)’ ’)’
↑
out
p
ut ’8’ ’
9
’
’1’ ’0’ ’;’
’
9
’
’
1’
’
2’
’
9
’
’
1’
’
6’
’
;’
’
9
’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
f ’A’ ’+’ ’(’ ’4’ ’5’ ’-’ ’F’ ’(’ ’X’ ’)’ ’*’ ’(’ ’B’ ’-’ ’C’ ’)’ ’)’
↑
output
’8’ ’
9
’ ’1’ ’0’
’
;’ ’
9
’ ’1’ ’2’
’
9
’
’
1’
’
6’
’
;’
’
9
’
’
3’
’
9
’
’
1’ ’7’ ’;’ ’
9
’
После того, как входная последовательность обработана (т.е. достигнут конец
файла f) стек S пуст, в файле output результат – номера позиций парных
скобок.
Заметим, что текст может быть разбит на строки, т.е. кроме обычных
символов (типа char) может встречаться специальный символ – маркер конца
строки. При чтении этого маркера значение переменной
pos изменять не
нужно, так он как не является «видимым» символом и не занимает отдельную
позицию в исходной последовательности. Пропустить маркер конца строки и
перейти к следующей строке можно с помощью оператора readln(f).
procedure pairs(f:text);
{ печатает пары номеров позиций открывающих и закрывающих
скобок из текста f в порядке возрастания номеров для
закрывающих скобок}
var sym: char;
pos,i: integer;
S: stack;
S
3 12
S 3
S
pos
12
sym
’
(’
pos
16
sym
’
)’
pos
17
sym
’
)’
…
S 3 12 sym ’(’ pos 12 … 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 f ’A’ ’+’ ’(’ ’4’ ’5’ ’-’ ’F’ ’(’ ’X’ ’)’ ’*’ ’(’ ’B’ ’-’ ’C’ ’)’ ’)’ ↑ S 3 sym ’)’ pos 16 output ’8’ ’9’ ’1’ ’0’ ’;’ ’9’ ’1’ ’2’ ’9’ ’1’ ’6’ ’;’ ’9’ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 f ’A’ ’+’ ’(’ ’4’ ’5’ ’-’ ’F’ ’(’ ’X’ ’)’ ’*’ ’(’ ’B’ ’-’ ’C’ ’)’ ’)’ ↑ S sym ’)’ pos 17 output ’8’ ’9’ ’1’ ’0’ ’;’ ’9’ ’1’ ’2’ ’9’ ’1’ ’6’ ’;’ ’9’ ’3’ ’9’ ’1’ ’7’ ’;’ ’9’ После того, как входная последовательность обработана (т.е. достигнут конец файла f) стек S пуст, в файле output результат – номера позиций парных скобок. Заметим, что текст может быть разбит на строки, т.е. кроме обычных символов (типа char) может встречаться специальный символ – маркер конца строки. При чтении этого маркера значение переменной pos изменять не нужно, так он как не является «видимым» символом и не занимает отдельную позицию в исходной последовательности. Пропустить маркер конца строки и перейти к следующей строке можно с помощью оператора readln(f). procedure pairs(f:text); { печатает пары номеров позиций открывающих и закрывающих скобок из текста f в порядке возрастания номеров для закрывающих скобок} var sym: char; pos,i: integer; S: stack; - 37 -
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »