
19.07.2009, 21:44
|
|
Участник форума
Регистрация: 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..
|
|
|