题解 | #实现简单计算器功能#

实现简单计算器功能

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

#include <iostream>
#include <string.h>
using namespace std;

void cal_func(int i, int a, int b) {
    // cout <<"a:"<<a << endl;
    // cout <<"i:"<<i << endl;
    // cout <<"b:"<<b << endl;
    switch (i) {
    case 0: {
        cout << a + b << endl;
        break;
    }
    case 1: {
        cout << a - b << endl;
        break;
    }
    case 2: {
        cout << a * b << endl;
        break;
    }
    case 3: {
        if (b != 0) {
            cout << a / b << endl;
        } else {
            cout << "Error" << endl;
        }
        break;
    }
    default:
        break;
    }
}
int findFunc(const char** src, const char* find) {
    //    cout<<"&src:"<<src<<endl;
    int count = 0;
    for (int i = 0; i < 4; ++i) {
        for (int j = 0; j < 3; j++) {
            // cout<<"find[i]:"<<find[j]<<endl;
            // cout<<"src[i][j]:"<<src[i][j]<<endl;
            if ((char)toupper(src[i][j]) == (char)toupper(find[j])
                || (char)tolower(src[i][j]) == (char)tolower(find[j])
                || (char)toupper(src[i][j]) == (char)tolower(find[j])
                || (char)tolower(src[i][j]) == (char)toupper(find[j])) {
                if(count != 0) {count++;}
                if(j == 0) {count++;}

                // cout<<"cout:"<<count<<endl;
            }
        }
        if (count == 3) return i;
        //        if(!strcmp(src[i],find))
        //            return i;
    }
    return 4;
}

int main() {

    char str[100] = { 0 };
    cin.getline(str, sizeof(str));

    // write your code here......
    const char* pf[] = {"add", "sub", "mul", "div"};
    char func[4] = {0};//要初始化数组空间,规定好数组的长度
    //    char num1[3] = {0};
    //    char num2[3] = {0};
    char* ps = str;
    //    char *pnum1 = num1;
    //    char *pnum2 = num2;
    int  count = 0; // 标记是否找到第一个数字sub
    int num1 = 0, num2 = 0;

    // 提取操作符和数字
    sscanf(str, "%s %d %d", func, &num1, &num2);

    // 输出提取的操作符和数字
    // cout << "Operation: " << func << endl;
    // cout << "Number 1: " << num1 << endl;
    // cout << "Number 2: " << num2 << endl;

    cal_func(findFunc(pf, func), num1, num2);

    //    for(int i=0;i < strlen(str)+1;i++){
    //        if(isalpha(ps[i])){
    //            func[i] =ps[i];
    //        }else if(isdigit(ps[i])){
    //            if(count  == 0){
    //                *pnum1 = ps[i];
    //                pnum1++;
    //                count = i;
    //            }
    //            if(count + 1 == i){
    //                *pnum1 = ps[i];
    //                pnum1++;
    //            }
    //        }
    //    }
    //    for(int i=count;i < strlen(str)+1;i++){
    //        *pnum2 = ps[i];
    //        pnum2++;
    //    }

    //    for(int i=0;i<3;i++){
    //        cout<<func[i];
    //    }
    //    cout<<endl;
    //    for(int i=0;i<3;i++){
    //        cout<<num1[i];
    //    }
    //    cout<<endl;
    //    for(int i=0;i<3;i++){
    //        cout<<num2[i];
    //    }
    //    cout<<endl;
    //    cout<<"atoi(num1):"<<atoi(num1)<<endl;
    //    cout<<"atoi(num2):"<<atoi(num2)<<endl;
    //    cal_func(findFunc(pf,func),num1,num2);


    return 0;
}

全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务