66分,#3、#6、#9、#12数据点过不去,求助!!
查看原帖
66分,#3、#6、#9、#12数据点过不去,求助!!
717713
HSTYYH楼主2023/7/25 16:11
#include<bits/stdc++.h>
using namespace std;

double ton(string str){  //这个函数是用来把字符串形式的数字,变成十进制数字
    double n=0;
    for(int i=0;i<str.size();i++){
        if(str[i]<='9' && str[i]>='0'){
            n+=str[i]-'0';
            n=n*10;
        }
    }

    return n/10.0;
}

int main()
{
    string s;
    getline(cin,s);
//这个for循环,把多余的空格都去掉,循环完的字符串是没有空格的 a+b=c;
    for(int i=0;i<s.size();i++){
        if(s[i]==' '){
            s.erase(i,1);
            i=i-1;
        }
    } 

    int p1=s.find_first_of("+-*/");  //找符号的位置
    string ans1=s.substr(0,p1);
    int p2 = s.find("=");
    string ans2=s.substr(p1+1,p2-p1-1);
    string ans3=s.substr(p2+1,s.size());
//到这个位置的时候,ans1 = a;  ans2=b; ans3=c;

    //然后开始判断哪个是 ? 
    if(ans1.compare("?")==0){  //如果a是问号,就运算 b 和 c
       // cout<<ton(ans2)<<"\n"<<ton(ans3);
        double a2=ton(ans2);
        double a3=ton(ans3);
        char ch1=s[p1];
        switch(ch1){
            case '+':
                cout<<fixed<<setprecision(2)<<a3-a2;
                return 0;
            case '-':
                cout<<fixed<<setprecision(2)<<a3+a2;
                return 0;
            case '*':
                cout<<fixed<<setprecision(2)<<1.0*a3/a2;
                return 0;
            case '/':
                cout<<fixed<<setprecision(2)<<a3*a2;
                return 0;
        }
    }
    else if(ans2.compare("?")==0){
        double a1=ton(ans1);
        double a3=ton(ans3);
        char ch1=s[p1];
        switch(ch1){
            case '+':
                cout<<fixed<<setprecision(2)<<a3-a1;
                return 0;
            case '-':
                cout<<fixed<<setprecision(2)<<a1-a3;
                return 0;
            case '*':
                cout<<fixed<<setprecision(2)<<1.0*a3/a1;
                return 0;
            case '/':
                cout<<fixed<<setprecision(2)<<a1/a3;
                return 0;
        }
    }
    else if(ans3.compare("?")==0){
        double a1=ton(ans1);
        double a2=ton(ans2);
        char ch1=s[p1];
        switch(ch1){
            case '+':
                cout<<fixed<<setprecision(2)<<a1+a2;
                return 0;
            case '-':
                cout<<fixed<<setprecision(2)<<a1-a2;
                return 0;
            case '*':
                cout<<fixed<<setprecision(2)<<1.0*a1*a2;
                return 0;
            case '/':
                cout<<fixed<<setprecision(2)<<a1/a2;
                return 0;
        }
    }

    return 0;
}




2023/7/25 16:11
加载中...