/
0_0morfey
/
Class
Обзор
Документация
Войти
/
0_0morfey
/
Class
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.cpp
127 строк
5 KB
0_0morfey
13 фев 2026, 09:55
Верифицирован
13 фев 2026, 09:55
019ae77
Код
Авторство
О чём код?
#include <iostream> #include <limits> #include "counter.h" // Вспомогательная функция: безопасный ввод целого числа bool getIntInput(int& result) { std::cin >> result; if (std::cin.fail()) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); return false; } std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // очистка буфера return true; } int main() { Counter counter; int initial; char choice; std::cout << "=== Счётчик ===\n"; std::cout << "Хотите задать начальное значение? (y/n): "; std::cin >> choice; std::cin.ignore(); // очистка буфера после ввода символа if (choice == 'y' || choice == 'Y') { std::cout << "Введите начальное значение: "; if (!getIntInput(initial)) { std::cout << "Ошибка ввода. Используется значение по умолчанию (1).\n"; counter = Counter(); } else { counter = Counter(initial); } } else { counter = Counter(); } std::cout << "Счётчик инициализирован. Текущее значение: " << counter.getValue() << "\n\n"; std::cout << "Доступные команды:\n"; std::cout << " + — увеличить на 1\n"; std::cout << " - — уменьшить на 1\n"; std::cout << " = — показать значение\n"; std::cout << " r — сбросить в 1\n"; std::cout << " s N — установить значение N (например: s 42)\n"; std::cout << " a N — добавить N (например: a 5)\n"; std::cout << " d N — вычесть N (например: d 3)\n"; std::cout << " z — проверить, равен ли нулю\n"; std::cout << " x — выход\n\n"; while (true) { std::cout << "> "; std::cin >> choice; switch (choice) { case '+': counter.increment(); std::cout << "Увеличено. Текущее: " << counter.getValue() << "\n"; break; case '-': counter.decrement(); std::cout << "Уменьшено. Текущее: " << counter.getValue() << "\n"; break; case '=': std::cout << "Текущее значение: " << counter.getValue() << "\n"; break; case 'r': counter.reset(); std::cout << "Сброс в 1. Текущее: " << counter.getValue() << "\n"; break; case 's': { int newVal; if (!getIntInput(newVal)) { std::cout << "Ошибка ввода.\n"; break; } try { counter.setValue(newVal); std::cout << "Значение установлено: " << counter.getValue() << "\n"; } catch (const std::invalid_argument& e) { std::cerr << "Ошибка: " << e.what() << "\n"; } break; } case 'a': { int amount; if (!getIntInput(amount)) { std::cout << "Ошибка ввода.\n"; break; } counter.add(amount); std::cout << "Добавлено " << amount << ". Текущее: " << counter.getValue() << "\n"; break; } case 'd': { int amount; if (!getIntInput(amount)) { std::cout << "Ошибка ввода.\n"; break; } counter.subtract(amount); std::cout << "Вычтено " << amount << ". Текущее: " << counter.getValue() << "\n"; break; } case 'z': std::cout << "Счётчик равен нулю: " << (counter.isZero() ? "Да" : "Нет") << "\n"; break; case 'x': std::cout << "Завершение работы.\n"; return 0; default: std::cout << "Неизвестная команда. Введите одну из: +, -, =, r, s, a, d, z, x\n"; } } return 0; }