Создание простого калькулятора CLI
Создайте калькулятор командной строки, который разбирает операторы и вычисляет выражения.
«Создание простого калькулятора CLI» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Цель проекта
Создайте консольный калькулятор, который считывает выражение вроде 3 + 4 и выводит результат. Мы сохраним его минимальным, но хорошо структурированным.
Необходимые заголовочные файлы
Нам нужны iostream для ввода-вывода и string для входных данных.
#include <iostream>
#include <string>
#include <sstream>Каркас главного цикла
Считайте строку, разберите ее, выполните вычисление и выведите результат. Завершите работу при EOF.
int main() {
std::string line;
while (std::getline(std::cin, line)) {
if (line == "quit") break;
double result = evaluate(line);
std::cout << "= " << result << "\n";
}
}Разбор с помощью stringstream
Для двух операндов и одного оператора разбиение на элементы с помощью stringstream получается простым и надежным.
double evaluate(const std::string& line) {
std::stringstream ss(line);
double a, b;
char op;
ss >> a >> op >> b;
return apply(op, a, b);
}Применение оператора
Оператор switch по символу оператора.
double apply(char op, double a, double b) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b != 0 ? a / b : 0;
default: return 0;
}
}Обработка ошибок
Что произойдет, если пользователь введет недопустимые данные? Проверьте состояние потока и выведите понятное сообщение.
if (!(ss >> a >> op >> b)) {
std::cout << "Invalid input\n";
return 0;
}Деление на ноль
Обрабатывайте деление на ноль явно. Выведите ошибку или выбросьте исключение — выберите вариант, соответствующий вашему проектному решению.
if (op == '/' && b == 0) {
throw std::runtime_error("division by zero");
}Добавление других операторов
Расширьте switch, добавив другие операции: %, ^ для возведения в степень или именованные функции, например sqrt.
Сохранение состояния
Нужен накапливаемый итог? Сохраните последний результат и разрешите пользователю начинать выражение со знака +.
double last = 0;
// if first token is an operator, use `last` as the first operandУлучшение взаимодействия с пользователем
Выводите приглашение перед каждым вводом, принимайте quit или EOF для выхода, игнорируйте пустые строки.
Больше двух операндов
Для выражений с несколькими операндами, например 3 + 4 * 2, нужен разборщик выражений. Алгоритм сортировочной станции — стандартный подход.
Тестирование калькулятора
Чтобы быстро выполнить тест, перенаправьте входные данные из файла.
echo "3 + 4\n10 / 2" | ./calcБыстрая проверка
Какое средство стандартной библиотеки удобно использовать для разбора разделенных пробелами элементов вроде 3 + 4?
Итоги
Небольшой калькулятор CLI демонстрирует ввод-вывод, разбор с помощью stringstream и диспетчеризацию через switch. Расширьте его обработкой ошибок, дополнительными операторами, состоянием и, в конечном итоге, разборщиком выражений.
Часто задаваемые вопросы
Урок «Создание простого калькулятора CLI» бесплатный?
Да — полный текст урока «Создание простого калькулятора CLI» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Создание простого калькулятора CLI»?
Создайте калькулятор командной строки, который разбирает операторы и вычисляет выражения. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Создание простого калькулятора CLI»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание простого калькулятора CLI
- Чтение и запись файлов CSV
- Игра «Угадай число»
- Счётчик частотности слов