2015-05-28 188 views
-2

我的程序計算每個單詞在空格前的長度,並將其與固定數字進行比較。 該號碼是從另一個字符串(pi)中選擇的。字符串輸出錯誤

我不知道爲什麼,但我的變量FLAG總是設置爲false,所以我總是得到相同的輸出。

我不知道問題出在哪裏。請大家幫幫忙

#include <iostream> 
#include <cstdio> 
#include <string> 
#include <cmath> 
#include <algorithm> 
#include <iomanip> 


using namespace std; 

int main() { 

    int t=0,num; 
    int i,j,len,space; 
    bool FLAG; 

    string pi ="31415926535897932384626433833",song; 

    cin>>t; 

    while(t--){ 

    len=0,space=0,i=0,j=0,num=0,FLAG=true; 

    cin.ignore(); 

    getline(cin,song); 

// problem from here 

     while(1) { 

      i=0,num=0,FLAG=true; 

      len=song.length(); 

      space=song.find(' '); 

      if(space==-1){ 
        if(len==pi[j]){ 
          FLAG=true; 
          break; 
        } 
        else{ 
          FLAG=false; 
          break; 
        } 
      } 

      else{ 

     while(i<space){ 
     num++; 
     i++; 
     } 

     if(num==pi[j]){ 
      FLAG=true; 
      j++; 
      num=0; 
      i=0; 
      song.erase(0,space+1); 
      cout<<song<<endl; 
        } 

       else{ 
        FLAG=false; 
        break; 
       } 
     } 

    } 

// to here 


    if(FLAG==true){ 
     cout<<"It's a pi song."<<"\n"; 
    } 

    else{ 
     cout<<"It's not a pi song."<<"\n"; 
    } 

    } 

return 0; 
} 
+0

小心這行:'if(space == -1)'-1不能保證找不到。 'song.npos'是。 – user4581301

回答

2

您正在使用的字符值進行比較的整數。即您將3與'3'進行比較。要從字符數字中獲得數字,請減去'0'。

所以,你可以寫

if (len==(pi[j] - '0')) 

另外,請學習如何使用調試器,你可以通過你的代碼一步發現不工作就行了。