使用c++设计一个计算器

 使用c++设计一个简单的计算器,它支持不带括号的四则运算,计算器要满足先乘除后加减的规则

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

// 定义运算符的优先级
int precedence(char op) {
    if (op == '*' || op == '/')
        return 2;
    if (op == '+' || op == '-')
        return 1;
    return 0;
}

// 执行基本的算术运算
double applyOp(double a, double b, char op) {
    switch(op) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/': return a / b;
    }
    return 0;
}

// 主要的计算函数
double calculate(std::string expression) {
    std::vector<double> values;
    std::vector<char> ops;

    std::stringstream ss(expression);
    std::string token;

    while (ss >> token) {
        if (token == "+" || token == "-" || token == "*" || token == "/") {
            // 处理运算符
            while (!ops.empty() && precedence(ops.back()) >= precedence(token[0])) {
                double b = values.back(); values.pop_back();
                double a = values.back(); values.pop_back();
                char op = ops.back(); ops.pop_back();
                values.push_back(applyOp(a, b, op));
            }
            ops.push_back(token[0]);
        } else {
            // 处理数字
            values.push_back(std::stod(token));
        }
    }

    // 处理剩余的运算
    while (!ops.empty()) {
        double b = values.back(); values.pop_back();
        double a = values.back(); values.pop_back();
        char op = ops.back(); ops.pop_back();
        values.push_back(applyOp(a, b, o
Dev-C++ 是一款流行的跨平台集成开发环境(IDE),主要用于C++编程。创建一个基本的计算器应用,你可以按照以下步骤进行: 1. **设置项目**: - 新建一个 "Empty Project" 或选择 "Console Application"。 - 在源文件管理器中,添加一个或多个 .cpp 文件作为主要代码。 2. **定义数据类型和函数**: - 创建一个函数来接收用户输入,例如 `void getInput()`,用于读取数字和运算符。 - 定义计算函数,如 `int calculate(int a, int b, char op)`,根据运算符执行加、减、乘、除操作。 3. **处理用户输入**: - 使用 `cin` 从用户获取输入,存储两个操作数和一个运算符。 - 判断运算符并调用相应的计算函数。 4. **主函数和循环**: - 在 `main()` 函数中,调用 `getInput()`,然后根据返回结果显示结果。 - 使用 while 循环,让用户可以选择继续计算或退出程序。 5. **错误处理**: - 检查输入是否为有效的数字和运算符,处理除数为零等异常情况。 6. **编写UI界面** (可选): 如果你想创建一个图形用户界面(GUI),可以使用 Dev-C++ 的内置库如 MFC 或第三方库如 Qt,来增强交互体验。 以下是一个简单的计算器实现示例(伪代码): ```cpp #include <iostream> // 定义计算函数 int calculate(int a, int b, char op) { switch (op) { case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': if (b != 0) return a / b; else throw std::runtime_error("Division by zero is not allowed."); default: throw std::invalid_argument("Invalid operator."); } } void getInput() { int num1, num2; char op; std::cout << "Enter first number: "; std::cin >> num1; std::cout << "Enter second number: "; std::cin >> num2; std::cout << "Enter operator (+, -, *, /): "; std::cin >> op; try { int result = calculate(num1, num2, op); std::cout << "Result: " << result << std::endl; } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; } } int main() { while (true) { getInput(); // 询问用户是否继续计算 std::string continueChoice; std::cout << "Do you want to continue? (y/n): "; std::cin >> continueChoice; if (continueChoice != "y") break; } return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值