#42823: #求解:cin、getline混用,getline前有加上cin.ignore()還是WA


kingdom0987123@gmail.com (Alex Cheng)

學校 : 不指定學校
編號 : 196345
來源 : [140.117.194.238]
最後登入時間 :
2024-10-06 02:13:07
a271. 彩色蘿蔔 -- 兔子 | From: [140.117.194.239] | 發表日期 : 2024-10-06 01:07

如題,我在vscode內測試沒問題,這裡測試執行就不過。有看過其他樓,說是cin.ignore放錯位置。不是用來讀換行符的嗎?不然要放哪裡?

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    int n;
    int red, white, yellow, black, poison, weight;
    bool isPoisoned, isDead;
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        cin >> red >> white >> yellow >> black >> poison >> weight;

        string str;
        cin.ignore();
        getline(cin, str);

        if (str == "")  // no input
        {
            cout << weight << "\n";
            continue;
        }

        for (char carrot : str)
        {
            if (isDead)
                break;
           
            if (carrot == ' ')
                continue;
           
            if (isPoisoned)
                weight -= poison;

            if (weight <= 0)
                isDead = true;

            switch (carrot)
            {
                case '1':
                    weight += red;
                    break;
                case '2':
                    weight += white;
                    break;
                case '3':
                    weight -= yellow;
                    break;
                case '4':
                    weight -= black;
                    if (isPoisoned)  // 毒性疊加
                        poison += poison;
                    else
                        isPoisoned = true;
                    break;
            }

            if (weight <= 0)
                isDead = true;
        }

        if (isDead)
            cout << "bye~Rabbit" << "\n";
        else
            cout << weight << "g" << "\n";
    }

    return 0;
};
 
ZeroJudge Forum