Тестовое задание к тренингу «Разработка программного обеспечения для Framework»

Калькулятор. Написать консольное приложение, выполняющее простые арифметические действия и функции.

Приложение читает выражения со стандартного входного потока и выводит значение выражения в стандартный выходной поток.

Выражения могут содержать целые и дробные числа, скобки, унарные (‘+’, ‘-‘) и бинарные (‘+’, ‘-‘, ‘*’, ‘/’) операторы и функции (напр. abs(), pow() – степень). Функции могут принимать определенное число аргументов: 1 (например sin(x)), 2 (например pow(x, y) и т. д. Некоторые функции допускают любое число аргументов (напр. max(1, 2), max(1, 2, 3, 4, 5)).

Функции, которые должны быть реализованы:

abs(x) – абсолютная величина

sqrt(x) – квадратный корень

min(x, y,…), max(x, y,…) – минимум и максимум из двух или более аргументов

round(x) – округление

pow(x, y) – x в степени y

Приложение должно уметь работать с любыми функциями из списка, корректно обрабатывая неправильное использование.

Примеры:

abs(-10) * (12 + max(1,4,0))

160

12 + abs(-10, 3)

Error: incorrect number of parameters for function “abs”

12 * a(-10)

Error: unknown function “a”

12 + (max(1,4)

Error: “)” expected

12 + PI2

Error: cannot resolve symbol “PI2”

abs(-min(200, 220 - sqrt(100)))

200

Общие требования для задания:

–  Классы, методы и поля должны иметь XML-комментарии (см. http://msdn. /library/default. asp? url=/library/en-us/csref/html/vcwlkxmldocumentationtutorial. asp). Ключевые моменты в реализации методов должны сопровождаться комментариями.

–  Приложения должны быть ”устойчивы” к ошибкам пользователя, выдавая информативные сообщения.

–  Задания должны высылаться в одном zip-файле с именем вида: <LastName>_<FirstName>.zip

–  Важно: задания оцениваются не только по правильности работы приложений, но и по качеству кода, эффективности реализации, пониманию и использованию OOP.