число в потоке
Прошу сильно не пинать за кроспостинг, просто задавал вопрос в друго разделе а внятного ответа не получил!
Если кто знает решение задачи пожалуйста помогите!
А задача такова: Во входной поток (для простоты файл) поступает бесконечная последовательность 32-х битных чисел, в какой-то момент времени это останавливается, необходимо найти и показать число которое появляется в этом потоке, с вероятностью больше 50%.
Заранее спасибо!!!
1. Создаёшь карту чисел
2. При каждом считываний числа - увеличиваешь счётчик считываний на
один. Находишь сичтаное число в карте чисел, если там такого нету добовляешь, его туда.
3. Когда дастаёшь число из карты - увеличиваешь его счётчик и пересчитываешь вероятность. Если число только, что добавлено -
устанавливаешь - его счётчик в едениуц(у этого числа)...
------------------------------------------------------------------
С чем конкретно проблема? - в работе с потоками? в том чтоб карту создать (связный список с асоциативным доступом)? в том чтоб вероятность считать?
в том чтоб карту создать (связный список с асоциативным доступом)?[/QUOTE]
есть уже готовая std::map
В нашем случае
std::map<int, int> IMap;
И тогда
IMap[число_из_файла] = ++IMap[число_из_файла];
Цитата:
Прошу сильно не пинать за кроспостинг, просто задавал вопрос в друго разделе а внятного ответа не получил!
[/COLOR]
[COLOR=red][/COLOR]
[COLOR=red]в таком случае можно написать модератору с просьбой перенести твою тему, а не открывать новую[/COLOR]
Просто я еще новичек (совсем зеленый) в программировании!
С другой стороны хранить статистику появления всех чисел тоже довольно затратно может быть. Особенно если поток будет длинный, а распределение чисел более менее равномерное то хранить map примерно на 4 * 10^9 элементов, тут не хватит максимальной памяти в 32-разрядных системах.