#44365: 提交的編譯結果好像不同?


t855000@gmail.com (RosaPigg)

學校 : 國立內壢高級中學
編號 : 106573
來源 : [116.241.253.253]
最後登入時間 :
2024-11-30 15:24:11
b515. 摩斯電碼-商競103 -- 103學年度商業類程式設計競賽模擬題 | From: [116.241.253.253] | 發表日期 : 2024-11-30 16:31

#include <iostream>
#include <map>
#include <sstream>
#include <vector>

using namespace std;

int main()
{
    int input_num = 0;

    while(cin>>input_num)
    {
        cin.ignore();
        map<string, char> transpose = {
            {".-",'A'}      ,   {"-...",'B'}    ,   {"-.-.",'C'}    ,   {"-..",'D'}     ,
            {".",'E'}       ,   {"..-.",'F'}    ,   {"--.",'G'}     ,   {"....",'H'}    ,
            {"..",'I'}      ,   {".---",'J'}    ,   {"-.-",'K'}     ,   {".-..",'L'}    ,
            {"--",'M'}      ,   {"-.",'N'}      ,   {"---",'O'}     ,   {".--.",'P'}    ,
            {"--.-",'Q'}    ,   {".-.",'R'}     ,   {"...",'S'}     ,   {"-",'T'}       ,
            {"..-",'U'}     ,   {"...-",'V'}    ,   {".--",'W'}     ,   {"-..-",'X'}    ,
            {"-.--",'Y'}    ,   {"--..",'Z'}
        };

        for(int i=0; i<input_num; i++)
        {
            string input_str = "";
            vector<string> mos_code;

            getline(cin, input_str);
            input_str += " ";

            for(int j=0; j<input_str.length(); j++)
            {
                if(input_str[j]==' ')
                {
                    string tmp = input_str.substr(0, j);
                    input_str = input_str.substr(j+1, input_str.length()-j-1);
                    mos_code.push_back(tmp);
                    j = -1;
                }
            }

            for(int k=0; k<mos_code.size(); k++)
            {
                map<string, char>::iterator iter = transpose.find(mos_code[k]);

                if(iter!=transpose.end())
                {
                    cout << iter->second;
                }
            }

            cout << endl;
        }
    }
}

 

在自己的IDE(CodeBlock MinGw)上結果是正確的,測試提交也是正確的
正式提交卻發現輸出莫名少了最後一個字符

 
#44462: Re: 提交的編譯結果好像不同?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.15.17.151]
最後登入時間 :
2025-02-02 09:42:51
b515. 摩斯電碼-商競103 -- 103學年度商業類程式設計競賽模擬題 | From: [39.10.8.246] | 發表日期 : 2024-12-08 09:50

#include
#include
#include
#include

using namespace std;

int main()
{
    int input_num = 0;

    while(cin>>input_num)
    {
        cin.ignore();
        map transpose = {
            {".-",'A'}      ,   {"-...",'B'}    ,   {"-.-.",'C'}    ,   {"-..",'D'}     ,
            {".",'E'}       ,   {"..-.",'F'}    ,   {"--.",'G'}     ,   {"....",'H'}    ,
            {"..",'I'}      ,   {".---",'J'}    ,   {"-.-",'K'}     ,   {".-..",'L'}    ,
            {"--",'M'}      ,   {"-.",'N'}      ,   {"---",'O'}     ,   {".--.",'P'}    ,
            {"--.-",'Q'}    ,   {".-.",'R'}     ,   {"...",'S'}     ,   {"-",'T'}       ,
            {"..-",'U'}     ,   {"...-",'V'}    ,   {".--",'W'}     ,   {"-..-",'X'}    ,
            {"-.--",'Y'}    ,   {"--..",'Z'}
        };

        for(int i=0; i        {
            string input_str = "";
            vector mos_code;

            getline(cin, input_str);
            input_str += " ";

            for(int j=0; j            {
                if(input_str[j]==' ')
                {
                    string tmp = input_str.substr(0, j);
                    input_str = input_str.substr(j+1, input_str.length()-j-1);
                    mos_code.push_back(tmp);
                    j = -1;
                }
            }

            for(int k=0; k            {
                map::iterator iter = transpose.find(mos_code[k]);

                if(iter!=transpose.end())
                {
                    cout << iter->second;
                }
            }

            cout << endl;
        }
    }
}

 

在自己的IDE(CodeBlock MinGw)上結果是正確的,測試提交也是正確的
正式提交卻發現輸出莫名少了最後一個字符


測資一行的最後面多了一個'\r'

 
#44463: Re: 提交的編譯結果好像不同?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.15.17.151]
最後登入時間 :
2025-02-02 09:42:51
b515. 摩斯電碼-商競103 -- 103學年度商業類程式設計競賽模擬題 | From: [39.10.8.246] | 發表日期 : 2024-12-08 10:00


        cin.ignore();


另外少輸出一行也是因為第一行的數字後面是\r\n,所以cin.ignore()只吃到\r

 

 

 

 
ZeroJudge Forum