Требования.

1. Калькулятор должен обеспечить ввод и редактирование целых чисел в обычной записи и рациональных дробей в записи:

[-]<целое без знака>|[-]<числитель><разделитель><знаменатель>.

<числитель>::= <целое без знака>

<знаменатель>::= <целое без знака>

<разделитель>::= ‘/’ | ‘|’

2. Предусмотреть настройку калькулятора на отображение результата в двух форматах: «дробь» или «число». В формате «дробь» результат всегда отображается в виде дроби. В формате «число» результат отображается в виде числа, если дробь может быть сокращена, так что знаменатель равен 1.

Необходимо предусмотреть следующие варианты использования (прецеденты) калькулятора:

1. Выполнение одиночных операций:
«операнд1» «операция» «операнд2» «=» «результат»

Пример. 5/1 + 2/1 = 7/1.

2. Выполнение операций с одним операндом:
«операнд» «операция» «=» «результат»

Пример. 5/1 * = 25/1.

3. Повторное выполнение операции:
«=»«результат» «=» «результат»

Пример. 5/1 + 4/1 = 9/1 = 13/1 = 17.

4. Выполнение операции над отображаемым значением в качестве обоих операндов:
«результат» «операция» «=» «результат»

Пример. 2/1 + 3/1 = 5/1 = 8/1 + = 16/1.

5. Вычисление функций:
«операнд» «Sqr» «результат»

Пример. 5/1 «Sqr» 25/1.

6. Вычисление выражений:
«операнд1» «функция1» «операция1» «операнд2» «функция2» «операция2» …«операндN» «операцияN» «=»«результат»

Пример.

ввод 6/1 Sqr + 2/1 Sqr / 10/1 + 6/1 =
Отображаемый результат 6/1 36/1 36/1 2/1 4/1 40/1 10/1 4/1 6/1 10/1

Отображаемое значение может сохраняться в памяти или добавляться к её содержимому.