题解 | #简单计算器#

简单计算器

https://www.nowcoder.com/practice/b8f770674ba7468bb0a0efcc2aa3a239

C++ 写的,有够麻烦的。

#include <iostream>
using namespace std;
# include <cmath>
# include <iomanip>

int main() {
    string a;
    string x1, x2;
    char sym;
    cin >> a;
    int n = a.size();
    int i = 0;
    bool f = (a[3] == '+');
    while (((int)(a[i] - 48) >= 0 && (int)(a[i] - 48) <= 9) || a[i]=='.')
    {
        x1 = x1 + a[i];
        ++i;
    }
    int x1_n = i;
    sym = a[i];
    ++i;
    while (i < n)
    {
        x2 = x2 + a[i];
        ++i;
    }
    int x2_n = n - x1_n - 1;

    int j = 0;
    double x1_s = 0;
    while (j < x1_n && x1[j] != '.')
    {
        x1_s = pow(10, j) * x1_s +  (x1[j] - 48);
        j++;
    }
    if (x1[j] == '.')
    {
        j++;
        int p = j;
        while (j < x1_n)
        {
            x1_s = x1_s + pow(10, p - 1 - j) * (x1[j] - 48);
            j++;
        }
    }
    

    j = 0;
    double x2_s = 0;
    while (j < x2_n && x2[j] != '.')
    {
        x2_s = pow(10, j) * x2_s +  (x2[j] - 48);
        j++;
    }
    if (x2[j] == '.')
    {
        j++;
        int p = j;
        while (j < x2_n)
        {
            x2_s = x2_s + pow(10, p - 1 - j) *  (x2[j] - 48);
            j++;
        }
    }
    
    switch (sym) {
    case '+': cout << fixed << setprecision(4) << x1_s << "+" <<
    fixed << setprecision(4) << x2_s << "=" <<
    fixed << setprecision(4) << x1_s + x2_s; break;
    case '-': cout << fixed << setprecision(4) << x1_s << "-" <<
    fixed << setprecision(4) << x2_s << "=" <<
    fixed << setprecision(4) << x1_s - x2_s; break;
    case '*': cout << fixed << setprecision(4) << x1_s << "*" <<
    fixed << setprecision(4) << x2_s << "=" <<
    fixed << setprecision(4) << x1_s * x2_s; break;
    case '/': 
    {
        if (x2_s == 0)
        cout << "Wrong!Division by zero!";
        else
            cout << fixed << setprecision(4) << x1_s << "/" <<
        fixed << setprecision(4) << x2_s << "=" <<
        fixed << setprecision(4) << x1_s / x2_s; break; 
        break;
    }
                              
    default: cout << "Invalid operation!"; break;

    }



    
}
// 64 位输出请用 printf("%lld")
C++题解 文章被收录于专栏

记录在牛客网用C++刷题的题解思路

全部评论

相关推荐

2024-11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
2024-12-09 12:21
门头沟学院 C++
l11hy:今早刚开,已满足
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务