cwnicol programming

プログラミング関連の投稿をすこしだけ

2重ループを抜ける

(1)フラグを用いる。

	while(XXX){			/* ループ1 */
		bool bFlg1 = false;
		bool bFlg2 = false;
		
		while(XXX){		/* ループ2 */
			
			/* hogehoge */
			
			if(ZZZ){	/* ループ1でcontinueしたい現象が
						   ループ2内で発生 */
				bFlg1 = true;
				break;
			}
			if(ZZZz){	/* ループ1でbreakしたい現象が
						   ループ2内で発生 */			
				bFlg2 = true;
				break;
			}
		}
		if(bFlg1){
			bFlg1 = false;
			continue;
		}else if(bFlg2){
			bFlg2 = false;
			break;
		}
		
		/* hogehoge */
	}

(2)ループ2を関数化する。

int sub2(){

		while(XXX){		/* ループ2 */
			
			/* hogehoge */
			
			if(ZZZ){	/* ループ1でcontinueしたい現象が
						   ループ2内で発生 */
				return 1;
			}
			if(ZZZz){	/* ループ1でbreakしたい現象が
						   ループ2内で発生 */			
				return 2;
			}
		}
		
		return 0;
}

void sub1(){
	while(XXX){			/* ループ1 */
		int iRc;
		
		iRc = sub2(){
		if(iRc == 1){
			continue;
		}else if(iRc == 2){	
			break;
		}
		
		/* hogehoge */
	}	
	
	return;
}