Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Подскажите по С++
цитата
24/06/09 в 18:21
 nordic
Требуется создать последовательность из characters случайных букв/цифр взятых из списка. Вывод code должен быть типа char...

Код:

char *code;
char *possible = "23456789bcdfghjkmnpqrstvwxyz";
for (int i = 0; i < characters; i++) {
  code += possible[rand()%28];
}

Все бы хорошо, только код всегда "r" =)


Код:
   
    char *code = (char*)malloc(characters + 1);
    code[characters] = 0;
    char *pCode = code;
    char *possible = "23456789bcdfghjkmnpqrstvwxyz";
    for (int i = 0; i < characters - 1; i++) {
      *(pCode++) = possible[rand()%strlen(*possible)];
    }

invalid conversion from `char' to `const char*'

В общем совсем запутался... Спасибо.
цитата
24/06/09 в 18:28
 asgor
char *code=new char[characters+1];
char *possible = "23456789bcdfghjkmnpqrstvwxyz";
int possible_len=strlen(possible);

for (int i = 0; i < characters; i++) {
code[i]=possible[rand()%possible_len];
}

code[characters]=0;
цитата
25/06/09 в 08:10
 Salvator
во-первый, юзай srand() для инициализации гсч.
во-вторых, rand()%possible_len не даст дебе случайное число из нужного диапазона. см. RAND_MAX
в третьих, не уверен, что в c++ просто так можно складывать char*; где-то должен быть класс, который позволяет так делать, что-то типа перегруженной строки.
цитата
25/06/09 в 11:59
 nordic
asgor - спасибо! работает.
Salvator - Ты прав, rand()%possible_len действительно всегда выдает один и тот же код =( Буду доделывать...

всех оценил ;)


Эта страница в полной версии