c++计算器的实现.代码.详细讲解

2024-01-08 15:31:39

前言

计算器是近代人发明的可以进行数字运算的机器。

也就是说,计算器不等同于算盘,前者能自行运算,后者只能简便计算过程,在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算工具也经历了由简单到复杂,由低级向高级的发展变化。进入20世纪后,人们发明了计算器。计算器的出现解决了很多比较复杂的计算问题。计算器的使用非常简单,它的运算规则是从左往右算,输入数据后可以一眨眼就得出结果。

计算器不局限与四则运算,还可以进行如开方,对数,三角函数之类的复杂运算,更有甚者,可以进行、、之类,或矩阵运算了。

今天,让我们来用C++编写简易计算器。
?

代码

下面是一个简单的C++计算器程序,它可以处理基本的加减乘除、平方和立方运算,并支持整数和浮点数。

#include <iostream>  
#include <cmath>  
  
using namespace std;  
  
int main() {  
    char op;  
    double num1, num2, result;  
  
    cout << "请输入操作符(+, -, *, /, ^, v): ";  
    cin >> op;  
    cout << "请输入两个数字: ";  
    cin >> num1 >> num2;  
  
    switch (op) {  
        case '+':  
            result = num1 + num2;  
            break;  
        case '-':  
            result = num1 - num2;  
            break;  
        case '*':  
            result = num1 * num2;  
            break;  
        case '/':  
            if (num2 != 0) {  
                result = num1 / num2;  
            } else {  
                cout << "除数不能为0!" << endl;  
                return 1; // 返回非零值以终止程序  
            }  
            break;  
        case '^': // 计算平方或立方,取决于第二个字符  
            if (cin.get() == '^') { // 如果是'v',则计算立方  
                result = pow(num1, 3);  
            } else { // 否则,计算平方  
                result = pow(num1, 2);  
            }  
            cin.ignore(); // 忽略输入流中的换行符或其他字符  
            break;  
        default: // 如果输入了无效的运算符,则退出程序  
            cout << "无效的运算符!" << endl;  
            return 1; // 返回非零值以终止程序  
    }  
    cout << "结果是: " << result << endl;  
    return 0; // 返回0以表示程序正常结束  
}

注意,这个程序没有进行错误处理,例如检查用户是否输入了有效的数字或运算符。在实际应用中,你可能需要添加更多的错误处理代码。

增加异常错误处理程序

#include <iostream>  
#include <cmath>  
#include <stdexcept> // 引入异常处理头文件  
  
using namespace std;  
  
int main() {  
    char op;  
    double num1, num2;  
  
    try { // 使用 try-catch 块来捕获异常  
        cout << "请输入操作符(+, -, *, /, ^, v): ";  
        cin >> op;  
        cout << "请输入两个数字: ";  
        cin >> num1 >> num2;  
  
        switch (op) {  
            case '+':  
                cout << "结果是: " << num1 + num2 << endl;  
                break;  
            case '-':  
                cout << "结果是: " << num1 - num2 << endl;  
                break;  
            case '*':  
                cout << "结果是: " << num1 * num2 << endl;  
                break;  
            case '/':  
                if (num2 == 0) {  
                    throw runtime_error("除数不能为0!"); // 抛出异常,终止程序  
                } else {  
                    cout << "结果是: " << num1 / num2 << endl;  
                }  
                break;  
            case '^': // 计算平方或立方,取决于第二个字符  
                if (cin.get() == '^') { // 如果是'v',则计算立方  
                    cout << "结果是: " << pow(num1, 3) << endl;  
                } else { // 否则,计算平方  
                    cout << "结果是: " << pow(num1, 2) << endl;  
                }  
                cin.ignore(); // 忽略输入流中的换行符或其他字符  
                break;  
            default: // 如果输入了无效的运算符,则抛出异常,终止程序  
                throw runtime_error("无效的运算符!");  
        }  
    } catch (runtime_error& e) { // 捕获 runtime_error 异常并输出错误信息  
        cerr << e.what() << endl; // 输出错误信息到标准错误流(cerr)  
        return 1; // 返回非零值以终止程序  
    } catch (...) { // 捕获其他未知异常并输出通用错误信息  
        cerr << "发生未知异常!" << endl; // 输出通用错误信息到标准错误流(cerr)  
        return 1; // 返回非零值以终止程序  
    }  
    return 0; // 返回0以表示程序正常结束  
}

?在改进后的版本中,我们使用了 try-catch 块来捕获异常。当遇到除数为0的情况或输入无效的运算符时,我们使用?throw?语句抛出异常。在 catch 块中,我们捕获?runtime_error?异常并输出错误信息到标准错误流(cerr),然后返回非零值以终止程序。我们还添加了一个通用的 catch 块来捕获其他未知异常。

最后,按照提示运行就可以啦~

文章来源:https://blog.csdn.net/2301_82018821/article/details/135456497
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。