Theory and Tasks for Students - Spring 2019
Stack

B1 Правильная Скобочная Последовательность

Требуется написать программу WinForms, выполняющую проверку вводимой пользователем скобочной последовательности на правильность.
ПСП = ("(" + ПСП + ")" | "[" + ПСП + "]" | "{" + ПСП + "}" | "<" + ПСП + ">" | "") + ПСП

Формат входных данных

Единственная строка, состоящая только из следующих символов: (, [, {, <, ), ], }, >.

Формат выходных данных

Сообщение о том, является введённая строка правильной скобочной последовательностью или нет.

Примеры

Входные данные: ([[<{}>()]{}])<> Ответ: TRUE

Входные данные: ([{<>]}) Ответ: FALSE

B2 Обратная Польская Запись

Требуется написать программу WinForms, вычисляющую значение выражения, записанного в постфиксной записи. В постфиксной записи оператор записывается после всех операндов, например 2 + 3 соответствует 2 3 +, (2 + 3) * 4 соответствует 2 3 + 4 *. Таким образом значение выражения легко высчитывается в процессе считывания строки слева направо и при этом нет необходимости учитывать приоритеты операций.

Формат входных данных

Единственная строка, состоящая из чисел и знаков операций сложения +, вычитания -, умножения * и деления /. Числа и знаки разделены пробелами. Все числа 0 ≤ Ai ≤ 230.

Формат выходных данных

Единственное число - значение выражения. В случае деления на 0 должно быть выдано соответствующее сообщение об ошибке.

Примеры

Входные данные: 4 5 * 2 / 4 5 + - Ответ: 1.0

B3 Калькулятор+

Требуется написать программу WinForms, представляющую собой калькулятор. С помощью кнопок на форме или ввода с клавиатуры составляется выражение, значение которого вычисляется при нажатии кнопки "равно". Должно быть возможно использование операций сложения, вычитания, умножения, деления, деления с остатком, целочисленного деления, возведения в степень, факториала, функция натуральной экспоненты ex. Приоритеты операций стандартные. Также должна быть возможность расставления скобок. Числа могут быть многозначными, но не превышать по модулю 263-1.
При решении задачи необходимо производить перевод выражения в (обратную) польскую запись.

B4 Ханойские Башни

Требуется написать программу WinForms с анимацией процесса решения классической задачи о Ханойских башнях. Суть этой задачи: имеется 3 штыря, на первом из них находится N дисков разного размера, сверху находится диск радиуса R1 = 1, Ri < Ri + 1, i < N. Требуется переложить все диски с первого штыря на третий в том же порядке. Единственная возможная операция - переложить верхний диск с одного штыря сверху на любой другой. В любой момент времени для любого диска на каждом штыре должно выполняться неравенство Ri < Ri + 1.

Формат входных данных

Единственное число - начальное условие - количество дисков на первом штыре.