我的程序计算每个单词在空格之前的长度,并将其与固定数字进行比较。 该数字是从另一个字符串(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 :(得分:2)
您正在将整数与字符值进行比较。即你正在比较3与&#39; 3&#39;。要从字符数字中获取数字,请减去&#39; 0&#39;。
所以你可以写
if (len==(pi[j] - '0'))
另外,请学习使用调试器,您可以单步执行代码以找到不起作用的行。