虽然知道是因为getline带来的RE 但不知道怎么改害
查看原帖
虽然知道是因为getline带来的RE 但不知道怎么改害
423622
Flamintune楼主2021/4/22 17:51
#include <string>
#include <cstdio>
using namespace std;
int main(void)
{
    int n, i, j, na, nb, nc;
    string c;
    cin >> n;
    string a, b, sum[100];
    char s;cin.get();
    for (int k = 0; k < n; k++)
    {
        getline(cin, c);
        
        switch (c[0])
        {
        case 'a':
            for (i = 2; c[i] != ' '; i++)
                ;
            a = c.substr(2, i - 2);
            for (j = i + 1; c[j] != '\0'; j++)
                ;
            b = c.substr(i + 1, j - i - 1);
            na = stoi((const string)a);
            nb = stoi((const string)b);
            nc = na + nb;
            sum[k] = to_string(na) + '+' + to_string(nb) + '=' + to_string(nc);
            break;
        case 'b':
            for (i = 2; c[i] != ' '; i++)
                ;
            a = c.substr(2, i - 2);
            for (j = i + 1; c[j] != '\0'; j++)
                ;
            b = c.substr(i + 1, j - i - 1);
            for (i = 2; c[i] != ' '; i++)
                ;
            a = c.substr(2, i - 2);
            for (j = i + 1; c[j] != '\0'; j++)
                ;
            b = c.substr(i + 1, j - i - 1);
            na = stoi((const string)a);
            nb = stoi((const string)b);
            nc = na - nb;
            sum[k] = to_string(na) + '-' + to_string(nb) + '=' + to_string(nc);
            break;
        case 'c':

            for (i = 2; c[i] != ' '; i++)
                ;
            a = c.substr(2, i - 2);
            for (j = i + 1; c[j] != '\0'; j++)
                ;
            b = c.substr(i + 1, j - i - 1);
            na = stoi((const string)a);
            nb = stoi((const string)b);
            nc = na * nb;
            sum[k] = to_string(na) + '*' + to_string(nb) + '=' + to_string(nc);
            break;
        default:
            for (i = 0; c[i] != ' '; i++)
                ;
            a = c.substr(0, i);
            for (j = i + 1; c[j] != '\0'; j++)
                ;
            b = c.substr(i + 1, j - i - 1);

            na = stoi((const string)a);
            nb = stoi((const string)b);
            switch (s)
            {
            case 'a':
                nc = na + nb;
                sum[k] = to_string(na) + '+' + to_string(nb) + '=' + to_string(nc);

                break;
            case 'b':
                nc = na - nb;
                sum[k] = to_string(na) + '-' + to_string(nb) + '=' + to_string(nc);

                break;
            case 'c':
                nc = na * nb;
                sum[k] = to_string(na) + '*' + to_string(nb) + '=' + to_string(nc);

                break;
            default:
                break;
            }

            break;
        }
        s = c[0];
    }
    // cout << c << '\n'
    //  << a << '\n'
    //  << b << '\n'
    //  << na << " " << nb << " " << nc << '\n'
    //  << sum;
    for (int k = 0; k < n; k++)
        cout << sum[k] << '\n'
             << sum[k].length() << '\n';
    return 0;
}
2021/4/22 17:51
加载中...