为什么循环停止
Why is cycle stopping?
我有一个带有布尔函数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的比较和递增,这也被外循环使用:
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中,这可以通过从"调试"->"新断点"->"新建数据断点"->地址中断并添加数据断点来完成;i
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 为什么在这个代码结束循环中没有得到结束
- 为什么我无法更改"set<set>"循环中的值<int>
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 为什么我不能在 while 循环中创建线程?
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么我的程序在for循环中k=0时返回垃圾值
- 为什么在递归中使用循环会产生意想不到的结果?
- 为什么在 while 循环中返回表达式不起作用
- 为什么我的 scanf() 没有在我的数组上迭代我的 for 循环?
- 而循环:简单的除法程序输出零,不明白为什么
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 为什么 GCC 不能假设 std::vector::size 在这个循环中不会改变?
- 为什么循环不会停止?C++
- 我的CLL程序在c++中不会停止循环!为什么
- (c++) For循环-为什么它这样做