Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

SmartCalc v1.0

Реализация SmartCalc v1.0.


Introduction

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

Part 1. Реализация SmartCalc v1.0

Необходимо реализовать программу SmartCalc v1.0:

  • Программа должна быть разработана на языке Си стандарта C11 с использованием компилятора gcc. Допустимо использование дополнительных библиотек и модулей QT
  • Код программы должен находиться в папке src
  • Сборка программы должна быть настроена с помощью Makefile со стандартным набором целей для GNU-программ: all, install, uninstall, clean, dvi, dist, test, gcov_report. Установка должна вестись в любой другой произвольный каталог
  • Программа должна быть разработана в соответствии с принципами структурного программирования
  • При написании кода необходимо придерживаться Google Style
  • Должно быть обеспечено покрытие unit-тестами модулей, связанных с вычислением выражений, с помощью библиотеки Check
  • Реализация с графическим пользовательским интерфейсом, на базе любой GUI-библиотеки с API для C89/C99/C11
    Для Linux: GTK+, CEF, Qt
    Для Mac: GTK+, Nuklear, raygui, microui, libagar, libui, IUP, LCUI, CEF, Qt
  • На вход программы могут подаваться как целые числа, так и вещественные числа, записанные через точку. По желанию можно обрабатывать ввод чисел в экспоненциальной записи
  • Вычисление должно производиться после полного ввода вычисляемого выражения и нажатия на символ =
  • Вычисление произвольных скобочных арифметических выражений в инфиксной нотации
  • Вычисление произвольных скобочных арифметических выражений в инфиксной нотации с подстановкой значения переменной x в виде числа
  • Построение графика функции, заданной с помощью выражения в инфиксной нотации с переменной 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)

Part 2. Дополнительно. Кредитный калькулятор

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

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

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

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

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages