| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > [c++]генерация seed для random из строки |
| Автор: musclerider 12.4.2012, 21:01 | ||
| Не хотел создавать новую тему. Итак, суть проблемы: Пишу консольную программу, инфометр. Задача: выводить случайное значение от 1 до 100 при введении данных. Значение должно быть строго привязано к вводимым данным (т.е. если я ввожу "50" и мне выдает 14%, то оно всегда должно выводить 14% когда я ввожу "50"). Проблема заключается в том, что при введении цифровых значений все работает как надо, но при введении слов без цифровых значений все время выдает 50%, вне зависимости от слова или набора букв. А надо, что-бы как с цифрами - в зависимости от набора букв должно выдаваться конкретное значение). Код программы выглядит так:
Модератор: не забываем пользоваться кнопочкой "Код" |
| Автор: bsa 12.4.2012, 23:55 |
| musclerider, тогда тебе необходимо считывать не число, а строку. А к случайным числам это имеет мало отношения. |
| Автор: musclerider 13.4.2012, 00:34 |
| Уже решил вопрос, некогда было на форуме отписать. Но все равно спасибо! (char infa;) |
| Автор: bsa 13.4.2012, 10:07 |
| musclerider, char принимает только один символ. Тебе необходимо использовать std::string и std::getline. |
| Автор: borisbn 13.4.2012, 15:14 |
и как ты теперь введёшь 0 (не '0', а 0) ? или 8 ? |
| Автор: musclerider 13.4.2012, 18:19 |
| Я просто нуб еще, только пару дней назад заинтересовался программированием. Сейчас попробую разобраться. Пока вот такая печалька: "не существует подходящей функции преобразования из "std::string" в "unsigned int" Похоже придется выдумывать как преобразовать string что-бы запихнуть его в srand, я наверное выражаюсь как быдло |
| Автор: volatile 13.4.2012, 19:12 |
нормально выражаетесь. Вам имхо хеш функция от строки нужна. а при хорошей хеш функции, уже и ранд, не нужен будет. |
| Автор: bsa 13.4.2012, 23:00 | ||
musclerider, можно, конечно, последовать совету volatile, но, думаю, тебе стоит просто просуммировать все символы строки:
|