if 문을 사용하여 일부 조건을 검사하는 프로그램을 작성 중입니다. 사실이라면 카운터를 증가시킵니다. 문제는 진술이 true가 되 자마자 변수가 끝없이 증가하거나 임의의 숫자로 증가한다는 것입니다. 이 문제와 관련된 코드의if 문을 깨는 것
if(res_vect_angle >=60 && res_vect_angle <=100 && left_mag_b >100)
{
//line(drawing, *iter_s, *(iter_s -1), Scalar(255, 255, 255), 2,8);
left_hook_count++;
cout<<"Left Hook:..........................!!! "<<left_hook_count<<endl;
if(left_hook_count++ == true)
{
break;
}
}
전체 덩어리 :
나는 조건을 충족하는 경우이 문 밖으로하지만 행운내 코드와 함께 휴식을 몇 절을 사용하려고 한
float M1, M2;
float A1, A2;
double left_mag_a, left_mag_b;
double res_vect_angle;
int i = 0;
for(vector<Point>::iterator iter_lh = Leftarm.begin(); iter_lh != Leftarm.end(); ++iter_lh)
{
if(iter_lh->y <=240 && iter_lh->y >=60 && iter_lh->x >=340 && iter_lh->x <=680)
{
left_detect.push_back(*iter_lh);
if(i % 4 == 0)
{
if(left_detect.size()>4)
{
for(vector<Point>::iterator iter_s = left_detect.begin()+3; iter_s != left_detect.end(); ++iter_s, i++)
{
//Resultant Magnetude
M1 = pow((double) iter_s->x + (iter_s -2)->x,2);
M2 = pow((double) iter_s->y + (iter_s -2)->y,2);
left_mag_a = (M1 + M2);
left_mag_b = sqrt(left_mag_a);
//Resultant Angle
A1 = abs(iter_s->x - (iter_s -2)->x);
A2 = abs(iter_s->y - (iter_s -2)->y);
res_vect_angle = abs(atan2(A1,A2) * 180 /PI);
//cout<<"LEFT HOOK ANGLE IS: "<<res_vect_angle<<endl;
if(res_vect_angle >=60 && res_vect_angle <=100 && left_mag_b >100)
{
//line(drawing, *iter_s, *(iter_s -1), Scalar(255, 255, 255), 2,8);
left_hook_count++;
cout<<"Left Hook:..........................!!! "<<left_hook_count<<endl;
if(left_hook_count++ == true)
{
break;
}
}
}
}
}
}
}
희망 사항은 ps에게 도움이됩니다. left_hook_count++;
은 내 main() 맨 위에 선언 된 int 변수입니다.
어디에서'left_hook_count'가 초기화 되었습니까? – Arthur
'끝없이'? 어딘가에 고리가 있니? 그 코드도 게시 할 수 있습니까? – A4L
'left_hook_count' 유형은 무엇입니까? 부울 유형이 아닌 경우 true로 비교하면 0과 같지 않은지 여부가 아니라 1과 같은지 검사합니다. 따라서 값이 2이면 루프에서 벗어날 수 없습니다. – hvd