- •1000 Задач по программированию
- •Часть III
- •17 Текстовые файлы: группа Text
- •17.1 Основные операции с текстовыми файлами
- •17.2 Анализ и форматирование текста
- •17.3 Текстовые файлы с числовой информацией
- •17.4 Дополнительные задания на обработку текстовых файлов
- •18 Составные типы данных в процедурах и функциях: группа Param
- •18.1 Одномерные и двумерные массивы
- •18.2 Строки
- •18.3 Файлы
- •18.4 Записи
- •19 Рекурсия: группа Recur
- •19.1 Простейшие рекурсивные алгоритмы
- •19.2 Разбор выражений
- •19.3 Перебор с возвратом
- •20 Указатели и динамические структуры данных: группа Pointer
- •20.1 Стеки
- •20.2 Очереди
- •20.3 Двусвязные списки
- •Литература
- •Содержание
19.2 Разбор выражений
Во всех заданиях данного пункта предполагается, что исходные строки, определяющие выражения, не содержат пробелов. При выполнении заданий рекомендуется обойтись без операторов цикла.
Recur14º. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> |
::= |
<цифра> | <выражение> + <цифра> | |
|
|
<выражение> – <цифра> |
Recur15º. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> |
::= |
<терм> | <выражение> + <терм> | |
|
|
<выражение> – <терм> |
<терм> |
::= |
<цифра> | <терм> * <цифра> |
Recur16º. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> |
::= |
<терм> | <выражение> + <терм> | |
|
|
<выражение> – <терм> |
<терм> |
::= |
<элемент> | <терм> * <элемент> |
<элемент> |
::= |
<цифра> | (<выражение>) |
Recur17. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> |
::= |
<цифра> | |
|
|
(<выражение><знак><выражение>) |
<знак> |
::= |
+ | – | * |
Recur18º. Проверить правильность выражения, заданного в виде непустой строки S (выражение определяется по тем же правилам, что и в задании Recur17). Если выражение составлено правильно, то вывести True, иначе вывести False.
Recur19. Проверить правильность выражения, заданного в виде непустой строки S (выражение определяется по тем же правилам, что и в задании Recur17). Если выражение составлено правильно, то вывести 0, в противном случае вывести номер первого ошибочного (или лишнего) символа в строке S.
Recur20. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом (функция M возвращает максимальный из своих параметров, а функция m — минимальный):
<выражение> |
::= |
<цифра> | M(<выражение> , <выражение>) | |
|
|
m(<выражение> , <выражение>) |
Recur21. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False):
<выражение> |
::= |
T | F | And(<выражение> , <выражение>) | |
|
|
Or(<выражение> , <выражение>) |
Recur22. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом (функция M возвращает максимальный из своих параметров, а функция m — минимальный):
<выражение> |
::= |
<цифра> | M(<параметры>) | m(<параметры>) |
<параметры> |
::= |
<выражение> | <выражение> , <параметры> |
Recur23. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False):
<выражение> |
::= |
T | F | And(<параметры>) | Or(<параметры>) |
<параметры> |
::= |
<выражение> | <выражение> , <параметры> |
Recur24. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False):
<выражение> |
::= |
T | F | And(<параметры>) | |
|
|
Or(<параметры>) | Not(<выражение>) |
<параметры> |
::= |
<выражение> | <выражение> , <параметры> |