[英]Why is cycle stopping?
我有一个带有bool函数issquare的程序,我的问题不需要任何代码。 我有迭代变量T,它是我将平方的时间字符串放入多少次的响应。 但是在第一次输入字符串之后,程序将在T = 1处停止,并且不要进行下一个迭代。 为什么?
int main(){
int T;
std::string line;
std::cin>>T;
int squaresize;
int** arr=new int*[30];
for(int d=0; d<30; d++){
arr[d]=new int[30];
}
for(int i=0; i<T; i++){
for (int d=0; d<30; d++){
for(int d1=0; d<30; d++){
arr[d][d1]=0;
}
}
std::cin>>squaresize;
for(int j=0; i<squaresize; i++){
std::cin>>line;
for(int a=0; a<squaresize; a++){
if (line[a]=='#'){
arr[j][a]=1;
}
}
}
if (issquare(arr, squaresize)==true){
std::cout<<"Case #"<<i+1<<": YES";
}
else{
std::cout<<"Case #"<<i+1<<": NO";
}
std::cout<<T;
}
return 0;
}
代替
std::cin>>line;
尝试
getline(std::cin, line);
operator>>
直到第一个空格才读取整行。
而不是j,您正在比较和递增i,外循环也使用i:
for(int j=0; i<squaresize; i++){
std::cin>>line;
for(int a=0; a<squaresize; a++){
if (line[a]=='#'){
arr[j][a]=1;
}
}
}
将来(以及可能使用更复杂的程序),学习如何使用调试器确实可以帮助您查找此类错误。 您的问题是,最外层循环执行的次数少于T次:
for(int i=0; i<T; i++){
由于T的值是常数,因此必须在循环内修改i。 一种简单的调试方法是使用调试器来查找变量的更改位置。 在Visual Studio中,这可以通过从Debug-> New Breakpoint-> New Data Breakpoint-> Address:&i断开并添加数据断点来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.