theo em biết là lệnh break chỉ thoát ra được 1 vòng lặp thôi đúng không ạ, vậy nếu em muốn thoát ra khỏi tất cả các vòng lặp cùng lúc thì ngoài goto ra còn các nào khác không ạ
Thoát khỏi vòng lặp lồng nhau
Bạn tạo 1 biến đánh dấu rằng bạn muốn thoát vòng lặp lồng nhau là được.
bool want_to_break_all = false;
for (int i = 0; ...; i++) {
for (int j = 0; ...; j++) {
if (lam_sao_do) {
want_to_break_all = true;
break;
}
}
if (want_to_break_all == true) {
break;
}
}
Version xấu xí hơn:
bool want_to_break_all = false;
for (int i = 0; !want_to_break_all && (...); i++) {
for (int j = 0; ...; j++) {
if (lam_sao_do) {
want_to_break_all = true;
break;
}
}
}
3 Likes
em cảm ơn nhiều ạ !!!
Nếu có quá nhiều vòng lặp lồng nhau và bạn không muốn quá nhiều biến cờ, hãy dùng goto
.
for(int a = 0; a < 10; ++a){
for(int b = 10; b < 20; ++b){
if(b == 12){
goto endLoop;
}
for(int c = 20; c < 30; ++c){
if(c == 22){
goto endLoop;
}
printf("%d %d %d\n", a, b , c);
}
}
}
endLoop:
3 Likes