ВУЗ:
Составители:
Рубрика:
- 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
- …
- следующая ›
- последняя »