傳話遊戲 2013編程之美

 我寫了一個答案,在我的編譯器是可以通過的,提交之後給出runtime error.甚是費解,求那個高人,大嬸,幫忙看看

 

  1. //author bruce 
  2. //2013/4/17 
  3. #include <string>  
  4. #include <iostream> 
  5. #include <map> 
  6. #include <cstdio>  
  7. #include <cstring>  
  8. #include <cmath>  
  9. using namespace std; 
  10.  
  11. map<string,string> WORDS;  
  12. char a_word[20],b_word[20]; //字符長度限制 
  13. char Total_words[100];  //alice說的話 
  14. char    *p; 
  15. int  T,M,N;//分別表示組數,轉換列表長度,以及參賽的人數 
  16. char *d=" ";//delim  
  17. void passMessage(); 
  18. int main()  
  19. {  
  20.     cout<<"請輸入測試數據組數"<<endl; 
  21.     scanf("%d%*c",&T); 
  22.     for(int NM_NUM = 1;NM_NUM <= T;NM_NUM++)  
  23.     { 
  24.         WORDS.clear();  
  25.         cout<<"請分別輸入參賽人數和列表長度(注意 人數一定要大於1人,否則傳話又有什麼意思呢)"<<endl; 
  26.         scanf("%d %d%*c",&N,&M); 
  27.          
  28.  
  29.         for(int  i = M;i > 0;i--) 
  30.         {  
  31.             cout<<"請分別輸入轉換前單詞a,和轉換後單詞b"<<endl; 
  32.             scanf("%s %s%*c",a_word,b_word);  
  33.             WORDS[a_word] = b_word;  
  34.         } 
  35.         cout<<"請輸入alice想說的話"<<endl; 
  36.         gets(Total_words); 
  37.         p = strtok(Total_words,d); 
  38.         printf("傳話完畢之後 Case #%d:\n ",NM_NUM); 
  39.         //cout<<"傳話完畢之後"<<endl; 
  40.         passMessage(); 
  41.          
  42.         while(  p=strtok(NULL,d)  ) 
  43.         { 
  44.              
  45.             cout<<""
  46.             passMessage();  
  47.         }  
  48.         cout<<endl; 
  49.     } 
  50.     return 0;  
  51. }  
  52. void passMessage()  
  53. {  
  54.     string messageWords; 
  55.     messageWords = p;  
  56.     bool judge; 
  57.     for(int i = 1;i < N;i++) 
  58.     {  
  59.         judge = WORDS.count(messageWords); 
  60.         if(judge) messageWords = WORDS[messageWords];  
  61.         else  
  62.             break
  63.     }  
  64.     cout<<messageWords<<endl;  
  65. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章