Lỗi không chạy vòng lặp While

không hiểu tại sao nó không chạy, cũng không báo lỗi, ai chỉ giúp với ạ

int cycles(unsigned char*Key)
{
	int E=0,i=0,m=0,x=0;
	int mas[16]={0};
	while (m!=16)
	{
		while ((Key[i])!=x)
		{
			i=Key[i];m++;mas[i]=1;
		}
		E++;
		for(int j=1;j<16;j++) 
		{
			if(!mas[j]) x=j;
			break;
		}
	}
	printf("\nE:\t%d\t",E);
	if (fabs(E-2.77)<=1.67) return 1;
	return 0;
}

Do dòng break này, hễ vào vòng for này thì sẽ break ra khỏi vòng while loop.

for(int j=1;j<16;j++) 
{
    if(!mas[j]) x=j;
    break;
}
int cycles(unsigned char*Key)
{
	int E=0,i=0,m=0,x=0;
	int mas[16]={0};
	while (m!=16)
	{
		mas[x]=1;
		while (Key[i]!=x)
		{			
			i=Key[i];m++;mas[i]=1;		
		}
		while(mas[x]) x++;
		E++;
	}
	printf("\nE:\t%d\t",E);
	if (fabs(E-2.77)<=1.67) return 1;
	return 0;
}

bỏ đi nó vẫn không chạy ạ

Tại sao em biết không chạy? Em đã thử debug chưa? Đặt một dòng printf vào dưới dòng while sẽ biết được là vòng while có chạy hay không.

1 Like

e sửa được rồi, em cảm ơn ạ

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?