[英]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.