SmartCalc

В данном проекте был реализован на языке программирования С++ в парадигме объектно-ориентированного программирования расширенную версию обычного калькулятора. Помимо базовых арифметических операций, как плюс-минус и умножить-поделить, также был добавлен калькулятор возможностью вычисления арифметических выражений с учетом приоритетов, а так же некоторыми математическими функциями (синус, косинус, логарифм и т.д.). Помимо вычисления выражений калькулятор так же должен поддерживает использование переменной x и построение графика соответствующей функции. В качестве дополнения был разработан кредитный и депозитный калькулятор.

Реализация SmartCalc

  • Программа разработана на языке C++ стандарта C++17
  • Код программы находится в папке src
  • При написании кода придерживаться Google Style
  • Сборка программы настроена с помощью Makefile со стандартным набором целей для GNU-программ: all, install, uninstall, clean, dvi, dist, tests. Установка должна вестись в любой другой произвольный каталог
  • Реализация с графическим пользовательским интерфейсом с помощью библиотеки Qt
  • На вход программы могут подаваться как целые числа, так и вещественные числа, записанные и через точку, и в экспоненциальной форме записи
  • Вычисление производится после полного ввода вычисляемого выражения и нажатия на символ =
  • Построение графика функции, заданной с помощью выражения в инфиксной нотации с переменной x (с координатными осями, отметкой используемого масштаба и сеткой с адаптивным шагом)
  • Область определения и область значения функций ограничиваются по крайней мере числами от -1000000 до 1000000
  • Проверяемая точность дробной части - минимум 7 знаков после запятой
  • Ввод до 255 символов
  • Скобочные арифметические выражения в инфиксной нотации поддерживают следующие арифметические операции и математические функции:
    • Арифметические операторы:

      Название оператора Инфиксная нотация
      (Классическая)
      Префиксная нотация
      (Польская нотация)
      Постфиксная нотация
      (Обратная польская нотация)
      Скобки (a + b) (+ a b) a b +
      Сложение a + b + a b a b +
      Вычитание a - b - a b a b -
      Умножение a * b * a b a b *
      Деление a / b / a b a b \
      Возведение в степень a ^ b ^ a b a b ^
      Остаток от деления a mod b mod a b a b mod
      Унарный плюс +a +a a+
      Унарный минус -a -a a-
    • Функции:

      Описание функции Функция
      Вычисляет косинус cos(x)
      Вычисляет синус sin(x)
      Вычисляет тангенс tan(x)
      Вычисляет арккосинус acos(x)
      Вычисляет арксинус asin(x)
      Вычисляет арктангенс atan(x)
      Вычисляет квадратный корень sqrt(x)
      Вычисляет натуральный логарифм ln(x)
      Вычисляет десятичный логарифм log(x)

Кредитный калькулятор

Специальный режим "кредитный калькулятор":

  • Вход: общая сумма кредита, срок, процентная ставка, тип (аннуитетный, дифференцированный)
  • Выход: ежемесячный платеж, переплата по кредиту, общая выплата

Депозитный калькулятор

Специальный режим "калькулятор доходности вкладов" (за образец можно взять сайты banki.ru и calcus.ru):

  • Вход: сумма вклада, срок размещения, процентная ставка, налоговая ставка, периодичность выплат, капитализация процентов, список пополнений, список частичных снятий
  • Выход: начисленные проценты, сумма налога, сумма на вкладе к концу срока