求助cpp,测试样例正确,提交全部RE

P1957 口算练习题

LiLi_ @ 2023-01-07 15:12:48

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

int calculate(int a,int b,int flag){
    if(flag==1)
        return a+b;
    else if(flag==2)
        return a-b;
    else
        return a*b;
}

int main()
{
    int n,i,flag,index1,index2,x=0,y=0,z,sum;
    cin>>n;
    cin.ignore();
    string s,s1,s2,s3;
    while(n--){
        getline(cin,s);
        if(s[0]=='a')
            flag=1;
        else if(s[0]=='b')
            flag=2;
        else if(s[0]=='c')
            flag=3;
        for(i=0;i<s.size();i++){
            if(s[i]>='0'&&s[i]<='9'){
                index1=i;
                break;
            }
        }
        for(i=index1+1;i<s.size();i++){
            if(s[i]==' '){
                index2=i-1;
                break;
            }
        }
        s1=s.substr(index1,index2-index1+1);
        s2=s.substr(index2+2,s.size()-index2-2);
        x=stoi(s1);
        y=stoi(s2);
        z=calculate(x,y,flag);
        if(flag==1)
            cout<<x<<'+'<<y<<'='<<z<<endl;
        else if(flag==2)
            cout<<x<<'-'<<y<<'='<<z<<endl;
        else
            cout<<x<<'*'<<y<<'='<<z<<endl;
        s3=to_string(z);
        sum=s1.size()+s2.size()+s3.size();
        cout<<sum+2<<endl;
    }
    return 0;
}

by mooktian @ 2023-01-08 20:54:56

我开始也是用getline,测试都没问题,就是一提交就0分, 只能输入部分重写,样例里a 64 46,可以把α输入到字符串,判断下,后面输入两个int,275 125,第一个275也是输入到字符串,用atoi或stoi转成int,后面再输一个int, 这题输入的处理是难点。


by LiLi_ @ 2023-01-10 12:47:18

@mooktian 好的好的,谢谢大佬!!!


|