![]() |
|
Модераторы: bsa |
![]()
|
|
| Inlude |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Здравствуйте! Я начал программировать на С++, используя компилятор Visual С++, и у меня появились вопросы.Вот они:
1)Какая функция для выпадения случайного числа?Там есть Random, но у неё нету даже параметров для указания того же диапазона. 2)Есть ли в Visual C++ функции на подобии IntToStr и StrToInt? И как их использовать. 3)Этот вопрос у меня касается С++, какая функция опрашивает клавиатуру? я делал так:
Это сообщение отредактировал(а) Inlude - 9.2.2009, 18:05 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
1) rand, о диапазонах заботься сам.
2) itoa & atoi; использовать их нужно так же как и любые другие С-функции 3) Вообще-то тебе надо начать с учебника по C++. "#13" в C++ является недопустимым выражением. Нужно писать просто "13". -------------------- ... |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: нет Всего: 8 |
Здравствуй, Inlude!
На первые 2 твоих вопроса отвечу, что есть такая штука как МСДН. Ее как раз и сделали, чтобы не было таких вопросов. описание ошибки компилятор пишет в окне output, если непонятно что написано, то скопируй и добавь к вопросу. без этого мало шансов что ктото сможет помочь (это на будущее). забудь про #13
Это сообщение отредактировал(а) voov - 9.2.2009, 18:44 |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
плюс инициализируй переменную i, а то в ней мусор содержится.
|
||||
|
|||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
1. Функция как уже сказали rand(), находится в cmath, о диапазонах заботься сам. На самом деле это очень просто, поэтому эта возможность и не встроена. Например rand()%11 выдаст простое целое число в диапазоне от 0 до 10 включительно. Перед первым вызовом функции желательно вызвать srand(time(0)); иначе числа будут ..не совсем случайными
2. Способов очень много(просто завались), причем стандартные не обязательно являются удобными или быстрыми. Например, функции типа itoa/atoi я ненавижу(и тому есть причины). Хорошая статья FAQ по этому поводу Преобразование строки в число и обратно |
|||
|
||||
| bsa |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Для получения равномерного распределения случайных числе в диапазоне [rmin;rmax) рекомендуется делать так:
Это сообщение отредактировал(а) bsa - 10.2.2009, 16:52 |
||||||||||
|
|||||||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
забавно, но в паскалях (делфи) случайное число в диапазоне получается умножением, а не делением (остатком) как в С
как известно умножение быстрее деления |
|||
|
||||
| Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 1 Всего: 37 |
GoldFinch, согласись, что тебе ни кто не мешает написать свою функцию для создания случайных чисел, если тебя не устраивает стандартная.
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
Dronchik, можно весь С++ написать, но это никак не связано с качеством самого языка
у такой особенности есть свое объяснение, С(С++) кроссплатформенный, а ограничение диапазона случайного числа умножением использует платформозависимую особенность умножения на x86 системах т.е. изза того что на С можно писать на какихнибудь ARMах, на ПК ты должен использовать заведомо медленный код |
|||
|
||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
GoldFinch, смешно
Еще вопрос, что медленее - брать остаток от деления(целочисленная операция), или умножать(floating point вычисления). Не говоря уже о том, что компилятор операцию типа rand()%2 может неплохо оптимизировать. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
pan2004, rand()%2 это частный случай, обычно вместо этого пишут rand()&1, т.к. и уже оптимизировано, и логично по смыслу операции - берем 1 случайный двоичный разряд
и почему деление - целочисленная операция, а умножение нецелочисленная? О_о |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |