ВУЗ:
Составители:
Рубрика:
- 38 -
begin reset(f);
init_stack(S); pos:=0;
if not eof(f) then
repeat
if eoln(f) then readln(f)
else
begin read(f,sym); pos:=pos+1;
if sym = '(' then push(S, pos)
{номер позиции открывающей скобки в стек}
else if sym = ')' then
{номер позиции открывающей скобки,
соответствующей данной закрывающей, взять из
стека и напечатать пару номеров}
begin pop(S,i);
write(i,'9',pos,';9')
end;
end;
until eof(f);
writeln;
end {pairs};
Задача 10. Программа на языке Турбо Паскаль. Программа запрашивает у
пользователя имя текстового файла, в котором находится последовательность
символов, сбалансированная по круглым скобкам, и выводит на экран номера
парных скобок как в задаче 9.
Решение
Опишем в программе переменную name типа string и присвоим ей
введённое пользователем имя внешнего файла, в котором хранится исходный
текст. Опишем также переменную g типа text; c помощью процедуры assign
свяжем файловую переменную g с внешним файлом name. Чтобы напечатать
последовательность номеров парных скобок, воспользуемся процедурой pairs
из задачи 9. Поскольку в pairs используется стек, мы должны реализовать в
нашей программе соответствующие структуру данных и операции, т.е. описать
тип
stack и процедуры, необходимые для работы со стеком. Реализуем стек с
помощью списка без заглавного звена. Процедура init_stack(S)делает
список S пустым; push(S,e)вставляет в начало списка S элемент e – это
операция «положить элемент в стек»; pop(S,e) удаляет из списка S первый
элемент и присваивает его переменной e – это операция «вытолкнуть (взять)
элемент
из стека». После того, как работа с файлом закончена, его следует
закрыть обращением к процедуре close.
program parantheses(input, output);
type elemtype=integer;
link=↑node;
node=record
elem:elemtype;
next:link
begin reset(f);
init_stack(S); pos:=0;
if not eof(f) then
repeat
if eoln(f) then readln(f)
else
begin read(f,sym); pos:=pos+1;
if sym = '(' then push(S, pos)
{номер позиции открывающей скобки в стек}
else if sym = ')' then
{номер позиции открывающей скобки,
соответствующей данной закрывающей, взять из
стека и напечатать пару номеров}
begin pop(S,i);
write(i,'9',pos,';9')
end;
end;
until eof(f);
writeln;
end {pairs};
Задача 10. Программа на языке Турбо Паскаль. Программа запрашивает у
пользователя имя текстового файла, в котором находится последовательность
символов, сбалансированная по круглым скобкам, и выводит на экран номера
парных скобок как в задаче 9.
Решение
Опишем в программе переменную name типа string и присвоим ей
введённое пользователем имя внешнего файла, в котором хранится исходный
текст. Опишем также переменную g типа text; c помощью процедуры assign
свяжем файловую переменную g с внешним файлом name. Чтобы напечатать
последовательность номеров парных скобок, воспользуемся процедурой pairs
из задачи 9. Поскольку в pairs используется стек, мы должны реализовать в
нашей программе соответствующие структуру данных и операции, т.е. описать
тип stack и процедуры, необходимые для работы со стеком. Реализуем стек с
помощью списка без заглавного звена. Процедура init_stack(S)делает
список S пустым; push(S,e)вставляет в начало списка S элемент e – это
операция «положить элемент в стек»; pop(S,e) удаляет из списка S первый
элемент и присваивает его переменной e – это операция «вытолкнуть (взять)
элемент из стека». После того, как работа с файлом закончена, его следует
закрыть обращением к процедуре close.
program parantheses(input, output);
type elemtype=integer;
link=↑node;
node=record
elem:elemtype;
next:link
- 38 -
Страницы
- « первая
- ‹ предыдущая
- …
- 36
- 37
- 38
- 39
- 40
- …
- следующая ›
- последняя »
