markdown
Проект представляет собой калькулятор с графическим интерфейсом, реализованный на C++ с использованием Qt. Калькулятор поддерживает основные арифметические операции, тригонометрические функции и специальные математические операции.
- Арифметические операции: сложение, вычитание, умножение, деление
- Скобки: поддержка приоритета операций с помощью скобок
- Унарный минус: работа с отрицательными числами
- Квадратный корень (√)
- Обратное число (1/x)
- Тригонометрические функции: sin, cos, tg, ctg
- Графический интерфейс на Qt с современным дизайном
- Подсветка ошибок с понятными сообщениями
- Форматирование чисел с удалением лишних нулей
OOP_lab3/
├── core/ # Основные классы ядра
│ ├── calculationerror.h
│ ├── calculator.h/cpp
│ ├── calculatorfacade.h/cpp
│ └── numberformatter.h/cpp
├── commands/ # Паттерн Command
│ ├── command.h
│ └── commands.h
├── ui/ # Пользовательский интерфейс
│ ├── calculatorwindow.h/cpp
│ └── calculatorwindow.ui
├── OOP_lab3.pro # Файл проекта qmake
└── main.cpp
Calculator- ядро калькулятора с алгоритмом обработки выраженийCalculatorFacade- фасад для упрощенного взаимодействия с калькуляторомCalculationError- класс для обработки математических ошибок
Command- абстрактный базовый класс командAppendCommand- добавление символов в выражениеCalculateCommand- вычисление выраженияClearCommand- очистка дисплеяDeleteCommand- удаление последнего символа- Специальные команды:
SquareRootCommand,ReciprocalCommand,SineCommand,CosineCommand,TangentCommand,CotangentCommand
NumberFormatter- форматирование чисел для отображенияCalculatorWindow- главное окно приложения с интерфейсом
- Базовые:
+,-,*,/ - Унарный минус:
-5,-(2+3) - Приоритет операций:
*и/>+и- - Скобки:
(2 + 3) * 4
- Синус:
sin(x) - Косинус:
cos(x) - Тангенс:
tg(x) - Котангенс:
ctg(x)
- Квадратный корень:
√x - Обратное число:
1/x
Калькулятор обрабатывает следующие ошибки:
- Деление на ноль
- Квадратный корень из отрицательного числа
- Неправильная последовательность операторов
- Непарные скобки
- Некорректный формат чисел
- Неопределенные тригонометрические значения
- Использует алгоритм сортировочной станции (Shunting-yard)
- Поддерживает унарные и бинарные операторы
- Корректно обрабатывает приоритет операций
- Автоматическое удаление лишних нулей после десятичной точки
- Поддержка очень больших и очень малых чисел
- Научная нотация для экстремальных значений
- Современный дизайн с тенями и цветовым кодированием
- Группировка кнопок по функциональности
- Интуитивно понятное управление
- C++17 или новее
- Qt 5 или новее
- Компилятор с поддержкой C++17
qmake OOP_lab3.pro
make
./OOP_lab3
Использование
Ввод чисел: Нажмите цифровые кнопки 0-9
Операции: Используйте кнопки +, -, *, /
Скобки: Для приоритета используйте ( и )
Функции: Нажмите соответствующую кнопку функции (√, 1/x, sin, etc.)
Вычисление: Нажмите = для получения результата
Очистка: C - полная очистка, ⌫ - удаление символа
Примеры выражений
Простое: 2 + 3 * 4 = 14
Со скобками: (2 + 3) * 4 = 20
С функциями: √16 + sin(0) = 4
Комплексное: (1/2) * √9 + cos(0) = 2.5
Архитектурные паттерны
Facade: CalculatorFacade предоставляет упрощенный интерфейс
Command: Каждое действие представлено объектом-командой
Exception Handling: Единая система обработки ошибок