30/09/2018, 16:49

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("
E:	%d	",E);
	if (fabs(E-2.77)<=1.67) return 1;
	return 0;
}
Nguyễn Minh Dũng viết 18:57 ngày 30/09/2018

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;
}
linhtinh viết 19:01 ngày 30/09/2018
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 ạ

Nguyễn Minh Dũng viết 18:51 ngày 30/09/2018

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.

linhtinh viết 18:53 ngày 30/09/2018

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

Bài liên quan
0