Показать сообщение отдельно

  #15  
Старый 12.01.2010, 15:08
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами: 10943066

Репутация: 1236


По умолчанию

Код:
//  s - pointer to block
//	l - length of block
//
//  ret: 0 - no serial '1' detected
//		 x - idx of first '1' (1-base)
int check_fragment(char *s, int l)
{
	for(int i=0; i< l-1; i++)
		if(s[i]=='1' && s[i+1]=='1')
			return i+1; // avoid zerobase offset
	return 0;	
}

int _tmain(int argc, _TCHAR* argv[])
{

	char *s01 = "1110101010";	// source 0/1
	const int block_len = 5;	// N

	int slen = strlen(s01);
	int num_frags = 0, temp;

	for(int i=0; i< slen; ){

		if(strlen(&s01[i])<block_len)break;
		temp = check_fragment(&s01[i], block_len);

		if(temp==0){
			i+= block_len;
			num_frags++;
			continue;
		}
		i+=temp;
	}

	printf("%d", num_frags);

	return _getch();
}
те ес я правильно понял то в данном варианте

char *s01 = "1110101010"; // source 0/1
const int block_len = 5; // N

вывод должен быть равен 1, как он и есть собсна.

...ес прально понял =)


примерной такой вывод (N=5):

0000000000 - 2
1111111111 - 0
0000110000 - 2
1100000000 - 1
0000000011 - 1
1111110000 - 1
1101010110 - 1
__________________


snow white world wide

Последний раз редактировалось sn0w; 12.01.2010 в 15:20..
 
Ответить с цитированием