Конвертер систем счисления
Проект представляет собой конвертер систем счисления с графическим интерфейсом, позволяющий преобразовывать числа между различными системами счисления (от 2 до 36). Приложение поддерживает работу с дополнительным кодом для отрицательных чисел и предоставляет удобный интерфейс для копирования результатов.
- Конвертация чисел между системами счисления от 2 до 36
- Поддержка дополнительного кода для работы с отрицательными числами
- Валидация ввода - проверка корректности введенных данных
- Копирование результатов в буфер обмена
- Обмен системами счисления между исходной и целевой
- Очистка полей ввода/вывода
- Двоичная (2)
- Восьмеричная (8)
- Десятичная (10)
- Шестнадцатеричная (16)
- И другие системы от 2 до 36
OP_lab1/
├── core/ # Основные модули
│ ├── appcontext.h # Структура контекста приложения
│ ├── entrypoint.h/cpp # Точка входа операций
│ └── logic.h/cpp # Бизнес-логика конвертации
├── ui/ # Пользовательский интерфейс
│ ├── mainwindow.h/cpp # Главное окно
│ └── mainwindow.ui # Qt Designer форма
├── OP_lab1.pro # Файл проекта qmake
└── main.cpp # Точка входа приложения
struct AppContext {
long value = DEFAULT_VALUE;
short inputStatus = ONLINE;
short addStatus = OFLINE;
unsigned currentBase = DEFAULT_BASE;
unsigned toBase = DEFAULT_BASE;
char result[LEN] = DEFAULT_STR;
char inputStr[LEN] = DEFAULT_STR;
char saveInBufStr[LEN] = DEFAULT_STR;
};enum Operation {
Convert, // Основная конвертация
Save, // Сохранение в буфер
Initialization, // Инициализация
Validation, // Валидация ввода
Swap, // Обмен системами
ConvertAddCode, // Конвертация с доп. кодом
ChekingAddCode // Проверка доп. кода
};
- Используется стандартная функция strtol()
- Поддерживает числа в любой системе счисления
- Автоматическое определение знака числа
- Для отрицательных чисел в двоичной/восьмеричной/шестнадцатеричной системах
- Корректная обработка граничных значений
- Преобразование через беззнаковые типы
- Проверка символов на соответствие алфавиту системы счисления
- Контроль переполнения числовых типов
- Проверка длины входной строки
Ввод: "255"
Из: 10 (десятичная)
В: 16 (шестнадцатеричная)
Результат: "ff"
- Проверка границ буферов
- Обработка ошибок ввода
- Защита от переполнения
- Оптимизированные алгоритмы конвертации
- Минимальное копирование данных
- Эффективное использование памяти
- Поддержка Windows API для буфера обмена
- Кроссплатформенная основа Qt
- Стандартные библиотеки C++
- Максимальная длина чисел: 32 символа
- Поддержка систем счисления: 2-36
- Алфавит: "0123456789abcdefghijklmnopqrstuvwxyz"
- long для основных вычислений
- long long для проверки переполнения
- Беззнаковые типы для дополнительного кода
- Qt 5 или новее=
- C++17 стандарт
- Компилятор с поддержкой Windows API
qmake OP_lab1.pro
make
./OP_lab110 → 2: "1010"
10 → 16: "a"
255 → 16: "ff"
-10 → 2: "11111111111111111111111111110110"
Двоичный доп. код: "11111111111111111111111111110110" → -10
Шестнадцатеричный: "fffffff6" → -10
- Некорректные символы для выбранной системы
- Переполнение числовых типов
- Пустой ввод
- Недопустимые комбинации систем счисления