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

  #16  
Старый 19.07.2009, 21:44
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
С нами: 9679872

Репутация: 347
По умолчанию

на С. Проверки неправильно переданных параметров в функции нет, конечно следовало бы понаставить assert'ов но мне влом.
Код:
#include <stdio.h>
#include <string.h>

const unsigned char n_begin = 'a';
const unsigned char n_end = 'z';
const size_t str_len = 3;

int next_element(unsigned char *str, size_t strlen) {
	size_t index = strlen - 1;
	int cond = 0;
	while(!cond) {
		cond = 1;
		if(++str[index] > n_end) {
			if (index == 0) {
				return 0;
			}
			str[index--] = n_begin;
			cond = 0;
		}
	}
	return 1;
}

int main(int argc, char** argv) {
	unsigned char str[str_len + 1];
	memset(str, n_begin, str_len);
	str[str_len] = 0;
	do {
		printf("%s\n", str);
	} while(next_element(str, str_len));
	return 0;
}

Последний раз редактировалось bons; 19.07.2009 в 22:02..
 
Ответить с цитированием