crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Массивы, Как сздавать массивы в Qt
Dimix
  опции профиля:
сообщение 2.12.2010, 14:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вопрос простой - Как создать масив от ["A".."Z", "a".."z", "1".."9"]
Что бы можно было вытащить случайный элемент из заданного диапазона?
Как в Qt использовать random()?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 2.12.2010, 15:03
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


вот так можно
std::vector<char> v('Z'-'A'+1 + 'z'-'a'+1+ '9'-'1'+1,0);

for(char c='A'; c<='Z';c++) v.push_back(c);
for(char c='a'; c<='z';c++) v.push_back(c);
for(char c='1'; c<='9';c++) v.push_back(c);

char randomChar=v[qrand()%v.size()];


можно и без вектора, конечно, обойтись. Но придётся вручную вбивать статический массив символов. Но оно того не стОит, если операция разовая
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 2.12.2010, 15:23
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 2.12.2010, 15:03) *
std::vector<char> v('Z'-'A'+1 + 'z'-'a'+1+ '9'-'1'+1,0);

for(char c='A'; c<='Z';c++) v.push_back(c);
for(char c='a'; c<='z';c++) v.push_back(c);
for(char c='1'; c<='9';c++) v.push_back(c);

char randomChar=v[qrand()%v.size()];

Ого вопрос оказывается не настолько прост. :blink: Я почти ничего не понял из выше приведенного кода.
Что такое std::vector?
Почему диапазон задается задом на пред?
Почему +1+ между диапазонами и что значит 0 в конце?
Почему qrand()?
Что означает %?
Как задать чтоб вывести к примеру 5 произвольных символов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 2.12.2010, 17:47
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Как задать чтоб вывести к примеру 5 произвольных символов?

С этим вопросом разобрался.
QString ad;
         char randomChar;
         for(int i=0; i=5; ++i){
         randomChar=v[random()%v.size()];
         ad=ad+randomChar;
         };

Только оно почемуто не работает. :unsure:
qrand() - выводит только квадраты;
random() rand() - выводит квадраты и заданый диапазон.

И появились новые вопросы что значит %v.size() Почему size?
Как сделать чтобы оно выводило только Верхний, Нижний регистры латинского алфавита и цыфры?
Отладчик показывает что получено 122 строки с 1 по 60 значение '?', ascii=0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 2.12.2010, 18:35
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


http://doc.crossplatform.ru/qt/4.3.2/containers.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 2.12.2010, 19:07
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(512es @ 2.12.2010, 18:35) *

Понятно без документации и книги дальше мне не шагнуть. Спасибо :clapping: буду листать Макса Шлее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 8:45