#32177: 我找不出哪裡錯


noahyyds1995@gmail.com (krisarchie)

學校 : 臺北市立第一女子高級中學
編號 : 203692
來源 : [1.164.6.207]
最後登入時間 :
2023-01-07 00:57:50
b515. 摩斯電碼-商競103 -- 103學年度商業類程式設計競賽模擬題 | From: [118.165.134.214] | 發表日期 : 2022-09-18 20:29

#include <bits/stdc++.h>
using namespace std ;
int main() {
    int n ;
    cin >> n ;
    map<string, char> fin= {
        {".-", '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'},
    };
    string ans[n+1]={0};
    for(int i=0;i<n;i++)
    {
      
      string a;
      getline(cin,a);
      vector <char> tans;
      vector <char> m ;
      for(int j=0;j<a.length();j++)
      {
        if(a[j]==' ')
        {
            string s(m.begin(),m.end());
            tans.push_back(fin[s]);  
            while (!m.empty())m.pop_back();
        }
        else 
        {
            m.push_back(a[j]);
        }
        
      }
      string s(tans.begin(),tans.end());
      ans[i]=s;
    }
    for(int i=0;i<n;i++)
      {
        cout << ans[i] << "\n" ;
      }

    return 0;
}

 
#32179: Re: 我找不出哪裡錯


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [111.248.111.135]
最後登入時間 :
2023-04-01 22:41:13
b515. 摩斯電碼-商競103 -- 103學年度商業類程式設計競賽模擬題 | From: [111.248.132.151] | 發表日期 : 2022-09-18 23:58

#include
using namespace std ;
int main() {
    int n ;
    cin >> n ;
    map fin= {
        {".-", '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'},
    };
    string ans[n+1]={0};
    for(int i=0;i    {
      
      string a;
      getline(cin,a);
      vector tans;
      vector m ;
      for(int j=0;j      {
        if(a[j]==' ')
        {
            string s(m.begin(),m.end());
            tans.push_back(fin[s]);  
            while (!m.empty())m.pop_back();
        }
        else 
        {
            m.push_back(a[j]);
        }
        
      }
      string s(tans.begin(),tans.end());
      ans[i]=s;
    }
    for(int i=0;i      {
        cout << ans[i] << "\n" ;
      }

    return 0;
}

幾個錯誤的點

1.string ans[n+1]={0};    //字串陣列不能將初始值設成整數

2.getline前要cin>>ws,將上一行句尾的換行弄掉

3.除了句中遇到空白時要解譯密碼,最後還要再解譯一次

大概就這樣XDD

 
ZeroJudge Forum